C++ QT UIC不会自动附加自定义小部件的标题
我制作了一个自定义小部件DuwagWidget和自定义小部件插件DuwagWidgetPlugin,可以在qt设计器中拖放它们来创建我的duwag.ui文件 但是,当我试图编译我的程序时,ui_duwag.h是从QT用户界面编译器生成的,但是在这个自动生成的文件中,uic不包括创建自定义小部件类所必需的my DuwagWidget.h DuwagWidgetPlugin是从QT中的接口派生出来的,用于为DuwagWidget创建CustomWidget,它只是一个工厂类 以下是DuwagWidgetPlugin的代码:^C++ QT UIC不会自动附加自定义小部件的标题,c++,qt,plugins,qt-designer,C++,Qt,Plugins,Qt Designer,我制作了一个自定义小部件DuwagWidget和自定义小部件插件DuwagWidgetPlugin,可以在qt设计器中拖放它们来创建我的duwag.ui文件 但是,当我试图编译我的程序时,ui_duwag.h是从QT用户界面编译器生成的,但是在这个自动生成的文件中,uic不包括创建自定义小部件类所必需的my DuwagWidget.h DuwagWidgetPlugin是从QT中的接口派生出来的,用于为DuwagWidget创建CustomWidget,它只是一个工厂类 以下是DuwagWidg
#include <DuwagWidgetPlugin.h>
#include <QtPlugin>
#include <qwidget.h>
#include <MTBFWidget.h>
DuwagWidgetPlugin::DuwagWidgetPlugin( QObject *parent ) : QObject(parent) {
initialized = false;
}
void DuwagWidgetPlugin::initialize(QDesignerFormEditorInterface * /* core */) {
if (initialized)
return;
initialized = true;
}
bool DuwagWidgetPlugin::isInitialized() const {
return initialized;
}
QWidget *DuwagWidgetPlugin::createWidget(QWidget *parent) {
return new DuwagWidget( parent );
}
QString DuwagWidgetPlugin::name() const {
return "DuwagWidget";
}
QString DuwagWidgetPlugin::group() const {
return "duwagplugin";
}
QIcon DuwagWidgetPlugin::icon() const {
return QIcon();
}
QString DuwagWidgetPlugin::toolTip() const {
return "The duwag control panel";
}
QString DuwagWidgetPlugin::whatsThis() const {
return "The duwag Control panel";
}
bool DuwagWidgetPlugin::isContainer() const {
return false;
}
QString DuwagWidgetPlugin::domXml() const {
return "<widget class=\"DuwagWidget\" name=\"DuwagWidget\">\n"
" <property name=\"geometry\">\n"
" <rect>\n"
" <x>0</x>\n"
" <y>0</y>\n"
" <width>100</width>\n"
" <height>100</height>\n"
" </rect>\n"
" </property>\n"
" <property name=\"toolTip\" >\n"
" <string>The MTBF Control panel</string>\n"
" </property>\n"
" <property name=\"whatsThis\" >\n"
" <string>The MTBF Control panel.</string>\n"
" </property>\n"
"</widget>\n";
}
QString DuwagWidgetPlugin::includeFile() const {
return "DuwagWidget.h";
}
Q_EXPORT_PLUGIN2(duwagplugin, DuwagWidgetPlugin)
所以问题是,在生成的头文件中,它无法生成自定义小部件DuwagWidget,因为它不知道它是什么。我在QtDesigner.ui文件中包含自定义类时遇到了这个问题。当您使用“升级到…”时,uic在添加适当的标题方面做得很好。。选择权 右键单击布局中的任何小部件。 选择“升级到…”。。。 选择基类并键入提升类NewClass的名称。它会自动将include NewClass.h添加到文件ui\u yourclass.h中。 不幸的是,当另一个设计器文件访问同一个自定义类并且两个ui_yourclass.h文件都包含在同一个头中时,这会创建冗余的include警告。此外,由于需要升级小部件,您必须在designer布局文件中创建并初始化该类的一个实例
我已经读过的另一种方法是转到工具>表单编辑器>表单设置,并在标题为“包含提示”的部分中添加NewClass.h。但是我从来没有这样做过。我通过向我的cmake中添加一些内容来解决此问题。.我错过了包含目录,因此如果有人使用cmake并且有相同的问题,请将此添加到您的cmake中:include\u directories includePath