如何在 Qt Designer 中管理 QSplitter

How to manage QSplitter in Qt Designer

当我按下一个按钮时,我会弹出一个对话框,其中包含用户 select 的内容,然后在最后按 'Ok'。我想要这个对话框中的拆分器。左窗格将显示树,右窗格将显示其他内容。我该怎么做才对?

来自 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。

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

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

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

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

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

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

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

  3. 右键单击 selected 小部件,然后从 Layout 菜单 select Lay Out Horizo​​ntally in Splitter 在拆分器中垂直布局

  4. 现在对对话框应用网格布局,一切都应该没问题。您会在对象检查器视图中看到类似这样的内容:

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

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

然后不要 select 主容器。 Select 您要拆分的两个小部件。您实际上是在它们上面而不是在主容器上放置了分离器。所以我去了小部件列表 window 和 select 一起编辑,然后右键单击对话框 window,向下滚动到布局选项,然后“在拆分器中垂直布局” " 未变灰。 Select它。

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

重复一遍:您没有在容器上设置布局,容器中装有您要拆分的部分。您正在 select 拆分两个小部件并在它们周围添加 QSplitter。这就是让它发挥作用的诀窍。