簡體   English   中英

在命名空間中升級自定義窗口小部件

[英]Promote to custom widget in a namespace

我在命名空間MyNameSpace中有MyCustomWidget

namespace MyNameSpace{
    class MyCustomWidget : public QWidget{
    };
}

如何在UI表單中將QWidget提升為MyCustomWidget? 它似乎不接受自定義命名空間。

鍵入包含命名空間的類的名稱: My::PushButton 有用。 注意:

  • Qt Designer將嘗試猜測標題名稱: 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) {}
}; 

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM