QWidgetsについて読んでいただけで、ランタイム中にロードされるウィジェットであるプラグインを作成したいと思います。サンプルコードと要件を見ると、プラグインはインターフェイスとQObjectから継承しているようです。 QWidgetプラグインを作成するにはどのようにしたらボタンとスロットが違うのですか?また、インターフェイスから継承するプラグインと、(QObjectから継承する)QWidgetを継承するベースクラスを作成することも可能です。QWidgetから継承するQtプラグインを作成する方法
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();
}
....
}
このコードのすべてのIは、一つのプロジェクトに入れ、プラグインとしてコンパイルしてから、私のメインのアプリケーションでそれを見て、それをロードするザ私はそれのインスタンスを作成します私が表示するウィジェットを作成させてください。
これを行うにはより良い方法がありますか、それともこれですか?
それは、デザイナーのためのプラグインを作成しようとしていないことです。人々が私の特別なウィジェットを使用した場合は、あまり気にしませんでした。私が望むのは、プラグインのメカニズムを使って実行時にウィジェットにロードできることです。 – chikuba
.uiファイルから、または名前からウィジェットを作成する必要がありますか? –
私はどんなuiファイルも持っていないと思う。私のすべてのウィジェットは、eveythingがコードで作成されたh/cppファイルです。ウィジェットを作成する関数を使ってプラグインオブジェクトを作成し、私の特殊ウィジェットを同じプロジェクトに入れることを考えています。それは醜いでしょうか? – chikuba