当我按下一个按钮时,我会弹出一个用户选择的对话框,然后按“确定”。我想在这个对话框中有一个分割器。左侧窗格将显示树,右侧将显示其他内容。我该怎么做?
从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);
因此,在此示例中,创建拆分器时没有任何对话框资源。如果我必须创建这种方式,那就意味着我必须在代码中创建所有控件而不是Qt Creator。
当我需要屏幕上的其他控件时,这样做的正确方法是什么?
答案 0 :(得分:52)
您可以在Qt Designer中创建包含项目的拆分器:
首先将您的小部件放在设计器中的对话框或小部件上(它们不应该在布局中)
选择您想要在分割器中的小部件(通过按住CTL并单击它们)
右键单击选定的窗口小部件,然后从布局菜单中选择在分割器中水平布局或在分割器中垂直布局。
现在将网格布局应用于对话框,一切都应该没问题。你会在Object Inspector View中看到类似的东西:
答案 1 :(得分:3)
好的,我知道这很古老,但这是完整的答案。
首先,在某种小部件容器中,将您的作品放入其中。对于我刚刚制作的窗口,我有一个小部件作为我的窗口。我在里面放了两个小部件,它们标有 topContainer
和 bottomContainer
之类的标签。然后我将他们每个人需要的所有小部件都放入其中,并为他们提供了自己的布局。
然后不要选择主容器。选择要拆分的两个小部件。您实际上是在它们上放置了一个分离器,而不是在主容器上。所以我转到小部件列表窗口并同时选择两者,然后右键单击对话框窗口,向下滚动到布局选项,并且“在拆分器中垂直布局”不会变灰。选择它。
您仍然需要在主容器上进行布局。拆分器不是布局。所以在这一点上,我只是在主容器上放置了一个垂直布局。
重复一遍:您没有在包含您要拆分的部分的容器上设置布局。您正在选择要拆分的两个小部件并在它们周围添加 QSplitter。这就是让它工作的诀窍。
答案 2 :(得分:0)
您仍然可以使用Qt Designer(集成在Qt Creator中)在.ui文件中创建控件。在Qt Designer中,在对话框中添加QWidget
对象。然后,从QDialog派生类中,您将直接在构造函数中使用QWidget
对象作为父对象创建QSplitter。
这样,您可以从Qt Designer创建除分割器对象以外的所有对象。
我认为也可以直接从Qt Designer创建QSplitter
(因为您可以创建QButton
,QCheckBox
...)项目。