【发布时间】:2011-04-06 23:58:33
【问题描述】:
我在命名空间 MyNameSpace 中有 MyCustomWidget
namespace MyNameSpace{
class MyCustomWidget : public QWidget{
};
}
如何在我的 UI 表单中将 QWidget 提升为 MyCustomWidget?它似乎不接受自定义命名空间。
【问题讨论】:
标签: c++ user-interface qt4
我在命名空间 MyNameSpace 中有 MyCustomWidget
namespace MyNameSpace{
class MyCustomWidget : public QWidget{
};
}
如何在我的 UI 表单中将 QWidget 提升为 MyCustomWidget?它似乎不接受自定义命名空间。
【问题讨论】:
标签: c++ user-interface qt4
键入包含命名空间的类的名称:My::PushButton。有用。请注意:
my_pushbutton.h。错了就改。【讨论】:
我的自定义插件使用以下代码运行良好。在这个例子中,命名空间不仅用在插件中,还用在继承插件的类中。
插件的标头---可以在QDesigner中使用
namespace plugin {
class MyCustomPlugin: public QObject, public QDesignerCustomWidgetInterface
{
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
MyCustomPlugin(QObject *parent = 0);
bool isContainer() const;
bool isInitialized() const;
QIcon icon() const;
QString domXml() const;
QString group() const;
QString includeFile() const;
QString name() const;
QString toolTip() const;
QString whatsThis() const;
QWidget *createWidget(QWidget *parent);
void initialize(QDesignerFormEditorInterface *core);
private:
bool initialized;
};
}
该插件的 cpp 文件
照常实现类,但以下方法必须考虑命名空间:
QString MyCustomPlugin::domXml() const
{
return "<widget class=\"plugin::MyCustomClass\" name=\"mycustomclass\">\n"
...
}
QString MyCustomPlugin::name() const
{
return "plugin::MyCustomClass";
}
QWidget *MyCustomPlugin::createWidget(QWidget *parent)
{
return new plugin::MyCustomClass(parent);
}
Q_EXPORT_PLUGIN2(mycustomplugin, plugin::MyCustomPlugin)
MyCustomClass
namespace plugin {
class QDESIGNER_WIDGET_EXPORT MyCustomClass: public MyCustomPlugin
{
Q_OBJECT
public:
MyCustomClass(QWidget * parent = 0) {}
};
}
【讨论】: