我是Qt的新手,我需要实现一个监控界面,并考虑以下因素:
QSplitter
。问题是我有太多的摄像头来为它们预定义小部件,所以我需要动态创建QSplitter
UI实例。
问题是,在使用QSplitter
时我无法找到Qt Designer
类,并且以编程方式创建QSplitter
类无效,因为MainWindow
已通过{{1}创建(.ui)。
我想听听有关这个问题的任何建议,如果有更好的方法,请告诉我。
答案 0 :(得分:1)
QSplitter
不是严格的UI元素,它本质上是一个控制子元素的父元素。如果您想通过Designer进行操作,您可能会遇到麻烦,但基本要点是您选择要控制的小部件,然后单击布局按钮组中的Layout Horizontally/Vertically in splitter
按钮。
您最常做的是以编程方式创建子元素,以编程方式创建拆分器,使用someSplitter->addWidget(...)
添加子窗口小部件。在Qt文档中有一些示例代码:
QSplitter *splitter = new QSplitter(parent);
QListView *listview = new QListView;
QTreeView *treeview = new QTreeView;
QTextEdit *textedit = new QTextEdit;
splitter->addWidget(listview);
splitter->addWidget(treeview);
splitter->addWidget(textedit);
http://doc.qt.io/qt-5/qsplitter.html#details
如果您真的想在Designer中进行操作,可以在此处找到指南:http://www.bogotobogo.com/Qt/Qt5_Splitter.php
答案 1 :(得分:0)
在Qt Designer中,QSplitter
不是小部件,而是Layout
。
选择要包含在两个拆分器区域中的小部件,然后从上下文菜单中选择Layout
(鼠标右键) - 您将找到两个条目Layout Horizontally in splitter
和Layout Vertically in splitter
到将小部件分组为垂直分割器或水平分割器。
答案 2 :(得分:0)
虽然QSplitter是一个小部件,但您无法直接在Qt Designer中创建一个小部件。它仅适用于布置预先存在的小部件 - 这不适合您的用例,因为您需要动态创建子小部件。
但是,您可以使用widget promotion解决此限制。这是一种简单的机制,允许您添加替换类来表示Qt Designer中不能直接使用的窗口小部件。这个想法是你添加一个与你真正想要的小部件最相似的小部件(例如QFrame
与QSplitter
最相似),然后将它提升到你在你的定义中的替代类自己的头文件。当uic最终生成代码时,它将使用您的替代类而不是Qt Designer中添加的小部件类(它只是作为占位符)。
请注意,在“推荐的窗口小部件”对话框中创建替代类时,基类应为QFrame
,而不是QSplitter
。这是因为您正在扩展QFrame
(即占位符窗口小部件),而不是QSplitter
。当然,您可以将替代课程定义为您喜欢的任何内容。
答案 3 :(得分:0)