簡體   English   中英

如何創建從QWidget繼承的Qt插件

[英]How to create a qt plugin that inherits from QWidget

我只是在閱讀有關QWidgets的文章,我想創建作為插件的插件,這些插件將在運行時加載。 當我查看示例代碼和要求時,該插件似乎繼承自接口和QObject。 如何創建QWidget插件,它們都具有不同的按鈕和不同的插槽? 同樣,有可能創建一個從接口繼承的插件和一個從QWidget(從QObject繼承)繼承的基類。

http://developer.qt.nokia.com/doc/qt-4.8/plugins-howto.html

但是,我了解了有關metaobject的信息,您只需知道它們的名稱即可在運行時在其中加載小部件(不需要RTTI支持)。 但是我究竟該如何將類傳遞給對象以使其識別它們? 處理插件時,我需要將它們放在一個特殊的項目中,該項目使用.pro文件中的不同標志集進行編譯。 但是我在這里怎么辦?

我真的很想使用qtplugin,但是如何使用?

一個主意:

讓該插件創建一個返回的QWidget是否可以接受並且是最佳選擇? 如果我在沒有接口的情況下創建界面,就看不到向設計人員編寫插件的意義。 還是我誤會了?

http://techbase.kde.org/Development/Tutorials/Writing_Qt_Designer_Plugins

class workspaceInterface {
   virtual QWidget* createWorkspace(QWidget* parent);
   ... other useful functions...
}

class mySpecialWidget : public QWidget {
    mySpecialWidget {
        add a layout, add some buttons, maybe change the color
    }
}

//plugin
#include "myspecialwidget.h"

class myPlugin : public QObject, public workspaceInterface {
    QWidget* createWorkspace(QWidget* parent) {
        return new MySpecialWidget();
    }
    .... 
}

我將所有這些代碼放入一個項目中,將其編譯為插件,然后在主應用程序中查找並加載。將創建它的一個實例,並讓它創建一個將顯示的小部件。

有沒有更好的方法可以做到這一點?

您可能正在尋找為Qt Designer創建自定義窗口小部件 Widget插件確實繼承自QWidget 例如,請參閱世界時間時鍾插件

盡管窗口小部件插件主要用於Qt Designer,但它們的某些功能可以在運行時借助QUiLoader來使用。

編輯:

編寫Qt Designer插件絕對是一筆投資。 如果您不需要設計時間支持,則在創建它們時可能會失去價值。

對於您自己的插件基礎結構,您可以將插件打包在帶有標准API(導出函數)的一組動態庫中,以調用它們。

暫無
暫無

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

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