将用户构建的小部件添加到qt creator中的ui文件

时间:2012-02-26 18:01:52

标签: qt qt4 qt-creator qt-designer

qt creator的qt设计器部分有许多内置的小部件。但是,假设我想将在同一qt项目中创建的自定义小部件添加到窗口的ui文件中。采取以下步骤:

  1. 使用主窗口创建一个新的Qt GUI应用程序,我们将调用窗口A。
  2. 向项目添加新窗口小部件,窗口小部件只使用标准UI组件,比如按钮。我们将这个小部件称为B.
  3. 将小部件B的实例添加到窗口A。
  4. 现在,我知道一种方法,那就是:

    1. 在窗口A中,添加一个空白小部件(或小部件容器,来自可能小部件列表的容器部分。我们将此小部件称为C。
    2. 将它(小部件C)推广到小部件B.
    3. 然而,问题在于Qt Creator的设计师将其视为通用的QWidget。因此,您无法执行将其添加到拆分器或连接特定于窗口小部件的信号/插槽等操作。

      那么有没有其他方法可以使用qt creator将小部件B添加到ui文件中的窗口A?谢谢。

2 个答案:

答案 0 :(得分:1)

我不太清楚你能理解你的问题,所以我可以提出错误的问题。你确定你的“B”小部件是QDesignerCustomWidgetInterface的子类吗?这应该暴露你的小部件/插件提供的所有东西......

最后一点:我的一位朋友试图像你一样添加自定义小部件。在Lol4t0告诉你的描述过程的最后,他发现你必须使用相同的编译器编译插件,并编译了qtcreator / designer。发生这种情况是因为我们知道c ++不能保持ABI兼容性(而不是C语言)这样的东西:名称处理可以从编译器改为编译器,如何将数据加载到寄存器中......等等。我的朋友尝试用mingw编译插件,但他发现qtcreator是用visual studio编译器编译的。因此,如果您想在Windows上部署插件或使用visual studio编译插件,或者您必须从头开始编译qtcreator / designer。

答案 1 :(得分:1)

我知道这是一个非常古老的问题,我不确定 Designer 在 2012 年有哪些功能,但我在 Google 搜索中遇到了这个问题,并认为我会添加一些缺失的信息:

<块引用>

然而,问题在于 Qt Creator 的设计者将其视为通用 QWidget。因此,您无法将其添加到拆分器或连接特定于小部件的信号/插槽。

现在可以毫无问题地将通用 QWidget 添加到拆分器中。

就信号和槽而言,您可以像这样使用它们:

  1. 将小部件提升为自定义小部件后,右键单击它并从上下文菜单中选择“更改信号/槽...”。
  2. 在此处为您希望能够在 Designer/Creator 中使用的任何自定义信号和槽添加签名。

现在这些信号和槽可以像任何其他信号和槽一样在 Designer 中访问。

使用升级的小部件唯一不能真正获得的是访问属性面板中的自定义属性;为此,是的,您需要完成 custom widget creation 流程。