我在命名空间MyNameSpace中有MyCustomWidget
namespace MyNameSpace{
class MyCustomWidget : public QWidget{
};
}
如何在UI表单中将QWidget提升为MyCustomWidget?它似乎不接受自定义命名空间。
答案 0 :(得分:12)
键入包含命名空间的类的名称:My::PushButton
。有用。请注意:
my_pushbutton.h
。如果错误,请更改它。答案 1 :(得分:1)
我的自定义插件使用以下代码很有效。在这个例子中,命名空间不仅用在插件中,还用在继承插件的类中。
插件的标题---可以在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) {}
};
}