我做了一个自定义小部件“DuwagWidget”和自定义小部件插件“DuwagWidgetPlugin”,它可以被拖拽&在qt设计器中放下来创建我的duwag.ui文件。QT UIC不会自动附加自定义小部件的标头
但是,当我尝试编译我的程序时,ui_duwag.h是从QT用户界面编译器生成的,但在此自动生成的文件中,uic不包含我需要创建的“DuwagWidget.h”自定义小部件类。
DuwagWidgetPlugin(从QT中的接口派生来创建CustomWidgets)只是DuwagWidget的工厂类。
下面是从DuwagWidgetPlugin代码:^
#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”,因为它不知道它是什么..
我解决了这个问题,我添加了一些东西到我的cmake ..我错过了include目录,所以如果有人使用CMAKE并且有同样的问题,请将它添加到你的cmake中:include_directories(INCLUDEPATH) – Amazonasmann 2013-05-14 12:50:03