2012-02-10 12 views
1

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は、一つのプロジェクトに入れ、プラグインとしてコンパイルしてから、私のメインのアプリケーションでそれを見て、それをロードするザ私はそれのインスタンスを作成します私が表示するウィジェットを作成させてください。

これを行うにはより良い方法がありますか、それともこれですか?

答えて

0

Creating Custom Widgets for Qt Designerを探している可能性があります。ウィジェットプラグインはQWidgetから継承します。たとえば、World Time Clock Pluginを参照してください。

ウィジェットプラグインは、それらの機能の一部がQUiLoaderの助けを借りて、実行時に使用することができ、Qtのデザイナーのために主に意図されている間。

編集:

間違いなく、Qtのデザイナプラグインを作成するためにいくつかの投資です。設計時間のサポートが不要な場合は、その作成にほとんど価値がない場合があります。あなたがそれらを呼び出すための標準化されたAPI(エクスポート機能)と動的ライブラリのセットでプラグインをパッケージ化することができ、独自のプラグインインフラストラクチャの

+0

それは、デザイナーのためのプラグインを作成しようとしていないことです。人々が私の特別なウィジェットを使用した場合は、あまり気にしませんでした。私が望むのは、プラグインのメカニズムを使って実行時にウィジェットにロードできることです。 – chikuba

+0

.uiファイルから、または名前からウィジェットを作成する必要がありますか? –

+0

私はどんなuiファイルも持っていないと思う。私のすべてのウィジェットは、eveythingがコードで作成されたh/cppファイルです。ウィジェットを作成する関数を使ってプラグインオブジェクトを作成し、私の特殊ウィジェットを同じプロジェクトに入れることを考えています。それは醜いでしょうか? – chikuba

関連する問題