2011-02-05 3 views
10

Qt作成者は、ウィジェットをベースウィジェットから派生したカスタム作成クラスに昇格するオプションがあります。これを使用してウィジェットを現在のプロジェクトのクラスに昇格させます。 Qtの作成者がクラス名とヘッダーファイル名について質問し、それらの値は* .uiファイル、次にui_myform.hに直接送られます。問題は、このファイルがソースツリーの外で生成されていることです(ビルドツリー内で)任意の場所に置くことができるので、ウィンドウをプロモートする際のパスの直接指定は役に立ちません。 QtCreator/uicに正しいヘッダを探す場所を知らせるには?それも可能ですか?Qt Creatorでウィジェットをプロモートする

おそらくQt変数にソースツリーの場所が指定されている可能性があります。これはヘッダファイル名フィールドに挿入できますか?

私は自己コンパイル済みQtCreator 2.0.1 +自己コンパイル済みQt 4.7.1を使用しています。

EDIT:

なぜあなただ​​けのヘッダファイルの完全なパス名を入力することはできませんか?

私はソースツリーを移動したり、Web上で共有しても、プロジェクトをコンパイルしたいと思っている人は、このパスをQt作成者またはソースファイルで編集する必要があります。

+0

ヘッダーファイルの完全なパス名を入力できないのはなぜですか? – TonyK

答えて

18

デザイナーは昇進ダイアログでお願いしますヘッダファイルには、カスタムウィジェットではなく、生成されたUI _ *。時間ファイルを定義YOUR独自のヘッダファイルです。

HEADERS += MyCustomWidget.h 

とIn:

はあなたがMyCustomWidgetに平野QWidgetを促進したいと、あなたはすでにこのようなあなたの.PROファイルに含まれてあなたのMyCustomWidgetクラスを定義しMyCustomWidget.hを持っている必要がありますウィジェットのプロモーションダイアログは、MyCustomWidget.hと入力してください。その目的は、生成されたuiヘッダファイル(どこにあっても)がYOURクラス定義を含むことができるようにすることです。

2

私はすでにこのことを分かっていました - 私は自分のクラスに昇進していて、自分で書かれたヘッダー名を付けていました。

問題は、この(自己が書かれた)ファイルをプロジェクトディレクトリに直接ではなかったがsrcサブディレクトリ(他のすべての源でもある)で、私はサブディレクトリテンプレートを使用していない、単に

SOURCES += src/myWidget.cpp 
のようにそれらを追加するということでした

プロモーションオプションには完全なパスは必要ありませんが、*.proファイルに表示されている必要があります。この場合、myWidget.hからsrc/myWidget.hに切り替えるとトリックが実行され、移動または共有すると機能します。

1

昇格ウィジェット形式(.ui)とクラスファイル(.cpp, .h)あれば、それはエラー("foo.h not found")を示し助けにはならないのQt Creatorをプロジェクトのサブディレクトリとj_kubikのソリューションであり、INCLUDEPATHとしてプロモーションのためだけのヘッダファイル名を使用してパスを提供しようとします.proファイルに保存します。

+0

私はこれがうまく動作します。サブディレクトリに.uiと.cpp/.hppファイルを置いた場合は、クラスのヘッダーに存在するためにINCLUDEPATHを追加する必要があります – Zardoz89

関連する問題