如何将一个UI QWidget添加到另一个UI QWidget中?

3
完全使用QT Designer。我已经创建了一个QWidget来封装一组控件。现在我想在QMainWindow表单中多次使用这个QWidget。
如何仅使用QT Designer将我的QWidget放置到QMainWindow上?
这不应该只是一个简单的拖放操作吗?我错过了什么?
1个回答

5

您可以使用QtDesigner将QWidget拖放到主窗口中,提升小部件

右键单击该小部件并选择提升至。在对话框中填写您创建的小部件的类名称(如果头文件与之不匹配,请相应地编辑),然后按添加提升按钮。

现在构建并运行您的应用程序,您应该会看到一个带有控件集合的小部件。

promoting


我可以通过使用(Base: QWidget,Class: Ui :: MyWidget,header:ui_mywidget.h)来实现这一点。但是编译失败了 - MyWidget的自动生成类不包含所期望的复制构造函数和成员函数。我认为这是因为在生成的代码中它不是QWidget的子类。 - Nicholas
请提供“您”的QWidget的相关控件源代码集合。 - Eligijus Pupeikis
我不知道我有什么可以提供的。VS2015解决方案为空(即由创建QT GUI项目向导创建)。QMainWindow ui为空,QWidget内只有一个拖放的QPushButton。几乎所有内容都是自动生成的。 - Nicholas
可能是VS2015解决方案的问题。我已经包含了一个gif,展示在QtCreator上的样子。 - Eligijus Pupeikis
2
Ui::MyWidget确实不是QWidget子类,不能用于推广。您需要为内部表单创建一个Qt Designer表单类(而不是Qt Designer表单),以便Qt Creator为您创建包含内部表单的QWidget子类。在推广小部件时使用该QWidget子类。 - Pavel Strakhov
@PavelStrakhov,太准确了。我现在知道我错在哪里了——我没有意识到我需要手动链接它。现在我将小部件提升为MyWidgetClass而不是Ui::MyWidget,它运行得很好。谢谢。 - Nicholas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接