如何将.ui表单插入另一个.ui表单

问题描述 投票:0回答:2

掌握 Qt 5 — 第 23 页中,创建两个

.ui
表单(
mainwindow.ui
task.ui
)后,他们给出以下说明:

打开MainWindow.ui文件并编辑它,得到以下结果:

并显示一张带有

mainwindow.ui
的图片,现在将
tasksLayout
(使用
task.ui
)QVBoxLayout 添加为子项。

他们对如何做到这一点给出零解释。我尝试将 QVBoxLayout 放在适当的位置,将其重命名为

tasksLayout
,并尝试构建,但收到错误:

分配不完整类型'Ui::Task', ui(new Ui::Task)

我假设这里的技术是在代码中动态加载子表单,正如我相信这段代码所做的那样:

ui->tasksLayout->addWidget(task);

我如何实现这一目标?

qt qt5 qt-designer
2个回答
3
投票

我是《Mastering Qt 5》一书的合著者。


  • 第 15 至 22 页解释了如何使用 Qt 设计器进行拖放操作 放下物品。所以你应该已经知道如何拖放 复选框、标签或按钮(并重命名)。
  • 第 23 页唯一的新元素是 2 个布局项
    toolbarLayout
    tasksLayout
    。对象检查器的屏幕截图向您显示了项目层次结构:因此您可以看到
    toolbarLayout
    包含按钮、间隔符和标签。但
    tasksLayout
    是空的。与其他项目一样,布局可以拖放,但将显示为红色矩形。因此,如果您将 QLabel 放入此红色矩形内,则标签将位于布局“内部”。
  • 不要混淆使用第 23 页解释的 Qt Designer 执行的工具栏创建和第 24 和 25 页解释的 C++ 动态任务创建。

对于这个简单的 UI (screenshot),只需遵循从上到下的层次结构即可:

  1. 将水平布局拖放到INSIDE中央小部件并 重命名
    toolbarLayout
  2. 右键单击中央小部件并“垂直布局”
  3. 将标签、垫片和按钮拖放到INSIDE
    toolbarLayout
  4. 将垂直布局拖放到toolbarLayout(蓝色 将显示辅助线)并将其重命名为
    tasksLayout
    添加垂直间隔符
  5. UNDER
  6. tasksLayout(再次检查蓝色辅助线)
    
        

-1
投票

决定在回到这个话题之前先集中时间提高 C++ 的熟练程度;因此响应延迟。

对于这个简单的 UI(屏幕截图),只需遵循从上到下的层次结构即可:

1 将水平布局拖放到中央小部件内,并将其重命名为“toolbarLayout”

2 右键单击中央小部件并“布局” 垂直”

3 将标签、间隔符和按钮拖放到 “工具栏布局”

4 将垂直布局拖放到 “toolbarLayout”(将显示蓝色辅助线)并将其重命名 “任务布局”

5 在“tasksLayout”下添加一个垂直间隔(再次检查 蓝色辅助线)

谢谢,这正是我完成表单布局所需的信息。从头开始重新做了章节教程,这次顺利完成了。

关于本书以及缺乏对表格(ui)的解释 创作:

本书是Packt“mastering”系列的一部分,不是一本 初学者指南。

第 1 章是为了帮助没有 Qt 的人 想要从高级书籍中学习的知识。这不是简单的方法 你也许应该尝试通过其他一些东西来完成你的学习 初学者教程/书籍/视频/网站(如果您有的话) 困难。

说得对,但是,恕我直言,如果您要包含入门教程,则不应省略步骤。

另外,我喜欢书籍,而且目前缺乏有关 Qt 的初学者印刷材料,所以我做出了最好的选择。

原帖

将我的所有文件与下载的书籍源进行比较后,我发现这是 mainwindow.ui 表单的问题。

对表单结构还没有足够的了解,无法在没有工作源进行比较的情况下修复它。

正如我所说,他们没有给出如何完成两种形式之间的连接的说明——只是把我带到泳池边,然后把我推进去:-S

书中内容不错,但需要认真编辑才能清晰。

© www.soinside.com 2019 - 2024. All rights reserved.