我想请你帮助Qt 5.1.1。
我有一个处理串行连接设备的应用程序。设备在RS 485上,因此在一个USB连接下,我可以同时与更多设备通信。
现在我的问题。每个设备都有自己的协议通信代码。
例如,每个设备都会向我发送代码'$ D01'或'$ D05',以防这是设备1或5.所以我可以知道有多少。或者也许我可以在软件中做到这一点,以便我说应用程序中有哪些设备号。
但我需要的是为每个设备提供自己的子窗口进行通信。窗户是一样的。我想知道如何动态地这样做,以便在给出设备的地址后,我可以在它自己的帧,子窗口或其他任何地方操作。
答案 0 :(得分:0)
在Qt中这很容易。 首先,您使用File-> New-> Qt-> Qt Designer From Class创建自定义窗口小部件("子窗口"在您的问题中)。然后使用QtCreator的设计器面板进行布局。所以你有一个新的自定义类,例如从您的自定义布局等QWidget派生的MyWidget。
然后你有了主窗口,例如MyMainWindow。您可以在该主窗口中创建一个容器窗口小部件,您希望窗口小部件位于该窗口中,并为其提供布局,例如:你说"垂直布局"。除此之外,你将容器小部件保持为空(只是一个附有布局的普通QWidget)。
现在,在您的代码中,每当您输入新的USB设备时,都按如下方式进行:
MyWidget *widget = new MyWidget(this);
container->layout()->addWidget(widget)
或containerLayout-> addWidget(),具体取决于您是否明确命名布局正如您所看到的,您仍然可以使用Qt的标准UI布局方法,并且使用一些额外的代码可以获得动态数量的小部件。
当您的窗口太忙时,您可以将容器更改为其他内容:MdiArea,StackedWidget,TabbedWidget等。