2013-12-14 30 views
1

我想问你一个关于Qt 5.1.1的帮助。为每个连接的设备动态创建小部件

我有一个应用程序与串行连接设备处理。设备在RS 485上,因此在一个USB连接下,我可以同时与更多设备通信。

现在我的问题。每个设备都有自己的协议通讯代码。

例如,如果这是设备1或5,每台设备都会向我发送代码'$ D01'或'$ D05'。所以我可以知道有多少人在那里。或者,也许我可以在软件中做到这一点,这样我就可以说应用程序的设备号码在那里。

但我需要的是每个设备都有自己的子窗口进行通信。窗户是一样的。我想知道如何动态地做到这一点,以便在给出设备的地址后,我可以使用它自己的框架,子窗口或任何其他设备进行操作。

回答

0

这在Qt中非常容易。 首先你用File-> New-> Qt-> Qt Designer From Class创建你的自定义小部件(你的问题中的“子窗口”)。然后使用QtCreator的设计器窗格进行布局。所以你有一个新的自定义类,例如MyWidget是从QWidget派生出来的,具有自定义布局等。

然后你有你的主窗口,例如MyMainWindow。您在该主窗口中创建一个容器小部件,您希望小部件驻留并为其提供布局,例如,你说“垂直布局”。除此之外,您还将容器小部件保留为空(只是一个带有布局的普通QWidget)。

现在在你的代码,只要您enumber一个新的USB设备,你做如下:

  • 创建自定义窗口小部件,例如MyWidget *widget = new MyWidget(this);
  • 添加小部件,例如container->layout()->addWidget(widget)或containerLayout-> addWidget(),这取决于你是否明确地或不叫你的布局
  • 使用自定义构造函数在你进myWidget类或制定者等相应的信息

来填补它,你可以看到你仍然可以使用Qt的标准UI布局方法,并且一些额外的代码有一个动态的部件。

当窗口太忙时,可以将容器更改为其他内容:MdiArea,StackedWidget,TabbedWidget等。

相关问题