【发布时间】:2014-08-31 06:03:34
【问题描述】:
在 Qt Creator 中,我将一个自定义小部件放到了我的表单上,它看起来不错,但是当我编译和运行时,只显示表单的默认 Qt 小部件(滑块、标签等),但不显示插件的小部件。
在.pro文件中,include路径和LIBS+=分别指向widget的头目录和.lib文件。
如果我以编程方式实例化小部件,它会显示:
cwidget *cw = new cwidget();
cw->show()
但这会使用小部件创建一个新窗口,而不是将其添加到主窗口上的正确位置。
难道没有办法让表单中的自定义小部件对象自动显示,就像所有 qt 标准小部件一样?
【问题讨论】:
-
您是如何将自定义小部件“拖放”到表单中的?
-
form.ui 是 Qt creator 项目的一部分,所以双击它,我可以通过将可用小部件(包括自定义小部件)列中的任何小部件拖动到表单上来设计表单。
-
好的,这意味着您正在使用 QtDesigner 作为表单布局的所见即所得编辑器。如果您的小部件列表中有您的自定义小部件可用,那么您必须创建了一个自定义 QtDesigner 小部件插件。您是否检查过您的插件是否正常工作?最具体地说,您的
CustomerWidgetPlugin::includeFile()函数正在返回正确的头文件?此外,您是否检查了生成的 UI 标头类中的setupUi()函数,您的自定义小部件正在正确生成? -
我将 dll 放在了创建者插件文件夹中,所以不知道如何判断它是否正常工作.. 小部件的图标仅显示 Qt 徽标,而不是小部件本身的迷你版本。 . 但是,当我将它拖到表单上时,它会正确显示。但是在构建之后,生成的 .h 文件在 setupUi() 中有小部件条目: ( cw = new cwidget(centralwidget); cw->setObjectName(QStringLiteral("cwg")); cw->setGeometry(QRect(310, 310) , 16, 16)); ) 在运行时,它是查找插件的 .h 文件还是只查找生成的 header/.ui 文件和链接的 .lib 文件?
标签: qt widget qt-creator