如何在Qt Designer中管理QSplitter

时间:2015-02-03 21:46:56

标签: c++ qt qt-creator qt-designer qsplitter

当我按下一个按钮时,我会弹出一个用户选择的对话框,然后按“确定”。我想在这个对话框中有一个分割器。左侧窗格将显示树,右侧将显示其他内容。我该怎么做?

从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。

当我需要屏幕上的其他控件时,这样做的正确方法是什么?

3 个答案:

答案 0 :(得分:52)

您可以在Qt Designer中创建包含项目的拆分器:

  1. 首先将您的小部件放在设计器中的对话框或小部件上(它们不应该在布局中)

  2. 选择您想要在分割器中的小部件(通过按住CTL并单击它们)

  3. 右键单击选定的窗口小部件,然后从布局菜单中选择在分割器中水平布局在分割器中垂直布局

  4. 现在将网格布局应用于对话框,一切都应该没问题。你会在Object Inspector View中看到类似的东西:

  5. enter image description here

答案 1 :(得分:3)

好的,我知道这很古老,但这是完整的答案。

首先,在某种小部件容器中,将您的作品放入其中。对于我刚刚制作的窗口,我有一个小部件作为我的窗口。我在里面放了两个小部件,它们标有 topContainerbottomContainer 之类的标签。然后我将他们每个人需要的所有小部件都放入其中,并为他们提供了自己的布局。

然后不要选择主容器。选择要拆分的两个小部件。您实际上是在它们上放置了一个分离器,而不是在主容器上。所以我转到小部件列表窗口并同时选择两者,然后右键单击对话框窗口,向下滚动到布局选项,并且“在拆分器中垂直布局”不会变灰。选择它。

您仍然需要在主容器上进行布局。拆分器不是布局。所以在这一点上,我只是在主容器上放置了一个垂直布局。

重复一遍:您没有在包含您要拆分的部分的容器上设置布局。您正在选择要拆分的两个小部件并在它们周围添加 QSplitter。这就是让它工作的诀窍。

答案 2 :(得分:0)

您仍然可以使用Qt Designer(集成在Qt Creator中)在.ui文件中创建控件。在Qt Designer中,在对话框中添加QWidget对象。然后,从QDialog派生类中,您将直接在构造函数中使用QWidget对象作为父对象创建QSplitter。

这样,您可以从Qt Designer创建除分割器对象以外的所有对象。

我认为也可以直接从Qt Designer创建QSplitter(因为您可以创建QButtonQCheckBox ...)项目。