如何将 QtDesigner ui 表单加载到另一个 ui 表单的 QFrame 中?

Posted

技术标签:

【中文标题】如何将 QtDesigner ui 表单加载到另一个 ui 表单的 QFrame 中?【英文标题】:How to load a QtDesigner ui form into a QFrame of another ui form? 【发布时间】:2013-11-21 16:06:49 【问题描述】:

我设计了一个基于QWidget 的QtDesigner ui 表单。让我们称之为Form1。我在其中添加了一些按钮和标签。现在我设计了另一个基于 QWidget 的 qt ui 设计器表单。让我们称之为 Form2。我在 Form 2 中有一个 QFrame,我想在其中加载 Form1。

我做了一些阅读,发现我可以右键单击 QFrame 并选择提升到。我把基类作为QFrame。提升类名称为 Form1。头文件为 form1.h。

我现在收到错误消息:

Form1 has no member named 'setFrameShape'
Form1 has no member named 'setFrameShadow'

我将基类更改为QWidget。而且它仍然没有在Form2的QFrame中加载Form1

感谢任何帮助。

编辑:

我使用基类作为QFrame 和 我在 ui_form2.h 中注释掉了以下几行,它可以正常工作 frame->setFrameShape()frame->setFrameShadow() 并且可以正常工作。

如果有更好的方法请告诉我

【问题讨论】:

【参考方案1】:

在设计器中推广一个小部件只是一种说法,“我知道这看起来像 ,但是当你生成代码时,我实际上希望你在这里创建一个 ”。您推广的小部件(以及用于推广的基类)的类型必须是您要推广到的类型的祖先。

在您的特定情况下,您提升的小部件的基础应该是 QWidget(而不是 QFrame),因为那是 Form1 的类型。您应该在框架内放置一个普通的 QWidget 并提升该小部件而不是框架。

【讨论】:

@Giz:我不确定你的意思。在 Designer 中提升一个小部件只是告诉它如何生成代码。当您在代码中创建小部件时,您已经在控制代码。 我在 qt 设计器中设计我的 ui。我右键单击并使用提升到选项。通过代码可以实现同样的事情吗?当我做 ui->widget-> 这只是为了知识时,我没有看到任何提升功能。你上面的回答解决了我的问题

以上是关于如何将 QtDesigner ui 表单加载到另一个 ui 表单的 QFrame 中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将一页上的 id 调用到另一页

如何在 Qt5 中将表单类从 UI 转移到另一个文件夹

从一页导航到另一页后脚本未加载

将 qtDesigner .ui 文件链接到 python/pyqt?

如何将图像从一种形式传递到另一种形式?

如何以使用 qtdesigner 创建的表单显示 pyqtgraph 图像?