1

これは非常に奇妙です。プロジェクトで Qt 以外の DLL にリンクすると、その DLL がダイアログを表示します。

Qt Creator+MinGW を使用してプロジェクトをコンパイルすると、ダイアログのテーマがなくなり、Win98/Classic スタイルの長方形のコントロールが表示されます。

ここに画像の説明を入力

Qt アドインを使用して同じプロジェクトを Visual Studio 2010 にインポートし、プロジェクトに変更を加えずにコンパイルして実行すると、DLL から表示されるダイアログは通常の Win7 テーマの外観になります (私は Win7 を使用しています)。

ここに画像の説明を入力

これは、DLL によって表示されるダイアログのみに影響します。EXE 自体によって表示されるすべてのダイアログは、正しくテーマ化されています。

リンク先の Qt のバージョンは、Qt Creator と VS2010 の両方で 4.8.1 です。

この奇妙な動作の原因は何ですか?

4

1 に答える 1

1

これはおそらく、Visual Studio が既定で実行可能ファイルにマニフェスト ファイルを含め、初期化に必要なものが含まれているためです。GUI のテーマを OS (XP、Vista、7) のテーマにするには、マニフェストが必要です。この回答とこのMSDN の記事を参照してください。

Qt ウィジェットのレンダリングは OS レンダラーではなくQStyleを介して行われるため、Qt GUI には関係しないことに注意してください。

于 2012-12-15T11:37:21.950 に答える