49

当我按下按钮时,我会弹出一个对话框,用户可以在其中选择内容并在最后按“确定”。我想在此对话框中使用拆分器。左窗格将显示树,右窗格将显示其他内容。我该怎么做呢?

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

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

4

3 回答 3

106

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

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

  2. 选择要在拆分器中的小部件(按住 CTL 并单击它们)

  3. 右键单击选定的小部件,然后从Layout菜单中选择Lay Out Horizo​​ntally in SplitterLay Out Vertically in Splitter

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

在此处输入图像描述

于 2015-02-04T04:24:36.753 回答
4

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

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

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

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

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

于 2021-02-20T16:24:53.850 回答
1

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

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

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

于 2015-02-03T21:53:53.227 回答