質問
私はこれから大規模な 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)から使用しても問題ありません。依存関係に注意する必要がありますが、それほど難しいことではありません。