Qt でサブプロジェクトを作成するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/61405

  •  09-06-2019
  •  | 
  •  

質問

私はこれから大規模な Qt アプリケーションを始めようとしていますが、これは小さなコンポーネント (連携して動作するクラスのグループ) で構成されています。たとえば、プロジェクトで使用されるダイアログがあるかもしれませんが、プロジェクトに統合する前に独自に開発する必要があります。どこかの別のフォルダーで作業してからメイン プロジェクト フォルダーにコピーする代わりに、そのダイアログ専用のサブフォルダーを作成して、それを何らかの方法でメイン プロジェクトに組み込むことはできますか?

役に立ちましたか?

解決

私ならこうします。次のフォルダー階層が必要だとします。

/MyWholeApp

アプリケーション全体のファイルが含まれます。

/MyWholeApp/DummyDlg/

最終的にはアプリケーション全体の一部となるスタンドアロン ダイアログ ボックスのファイルが含まれます。

私はスタンドアロンのダイアログ ボックスと関連クラスを開発します。インクルードされる Qt プロジェクト ファイルを作成します。これには、最終的にアプリケーション全体の一部となるフォームとファイルのみが含まれます。

/MyWholeApp/DummyDlg/ 内のファイル DummyDlg.pri:

# Input
FORMS += dummydlg.ui
HEADERS += dummydlg.h
SOURCES += dummydlg.cpp

上の例は非常に単純です。必要に応じて他のクラスを追加することもできます。

スタンドアロン ダイアログ ボックスを開発するには、このダイアログ専用の Qt プロジェクト ファイルを作成します。

ファイル DummyDlg.pro (/MyWholeApp/DummyDlg/ 内):

TEMPLATE = app
DEPENDPATH += .
INCLUDEPATH += .

include(DummyDlg.pri)

# Input
SOURCES += main.cpp

ご覧のとおり、この PRO ファイルには上記で作成した PRI ファイルが含まれており、ダイアログ ボックスをスタンドアロンとして実行するための基本コードを含む追加ファイル (main.cpp) が追加されています。

#include <QApplication>
#include "dummydlg.h"

int main(int argc, char* argv[])
{
    QApplication MyApp(argc, argv);

    DummyDlg MyDlg;
    MyDlg.show();
    return MyApp.exec();
}

次に、このダイアログ ボックスをアプリケーション全体に含めるには、Qt-Project ファイルを作成する必要があります。

ファイル WholeApp.pro ( /MyWholeApp/ 内):

TEMPLATE = app
DEPENDPATH += . DummyDlg
INCLUDEPATH += . DummyDlg

include(DummyDlg/DummyDlg.pri)

# Input
FORMS += OtherDlg.ui
HEADERS += OtherDlg.h
SOURCES += OtherDlg.cpp WholeApp.cpp

もちろん、上記の Qt-Project ファイルは非常に単純ですが、スタンドアロン ダイアログ ボックスをどのように含めたかを示しています。

他のヒント

はい、メイン プロジェクト (.pro) ファイルを編集して、サブ プロジェクトのプロジェクト ファイルを含めることができます。

ここを参照

Windows 上の Qt の場合、必要なサブプロジェクトごとに DLL を作成できます。以降はメインプロジェクト(exe)から使用しても問題ありません。依存関係に注意する必要がありますが、それほど難しいことではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top