QWidgets について調べていたところ、実行時に読み込まれるウィジェットであるプラグインを作成したいと考えています。サンプルコードと要件を見ていたら、プラグインはインターフェイスと QObject を継承しているようです。すべて異なるボタンと異なるスロットを持つ QWidget プラグインを作成するにはどうすればよいですか? また、インターフェイスから継承するプラグインと、QWidget から継承する (QObject から継承する) ベースクラスを作成することは可能でしょうか。
http://developer.qt.nokia.com/doc/qt-4.8/plugins-howto.html
ただし、名前を知るだけで実行時にウィジェットをロードできるメタオブジェクトについて読みました (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();
}
....
}
このすべてのコードを 1 つのプロジェクトに入れ、プラグインとしてコンパイルし、メイン アプリケーションで探してロードします。そのインスタンスを作成し、表示するウィジェットを作成させます。
これを行うより良い方法はありますか、それともこれですか?