1

以下は Qt のドキュメントからの引用です。

Qt を使用する GUI アプリケーションには、正確に 1 つの QApplication オブジェクトがあります。

それは非常に明確です。しかし、私はその理由を理解できませんでした。面接でそのような質問をされたのですが、今となっては適切な答えが見つからないのですが、どなたか教えていただけませんか?

4

2 に答える 2

4

QCoreApplicationドキュメントはヒントを提供します:

QCoreApplication にはメインのイベント ループが含まれており、オペレーティング システム (タイマーやネットワーク イベントなど) およびその他のソースからのすべてのイベントが処理され、ディスパッチされます。また、アプリケーションの初期化とファイナライズ、およびシステム全体とアプリケーション全体の設定も処理します。

また、任意の時点で (単一のスレッドで) 実行できるイベント ループは 1 つだけであるため、個別のQCoreApplicationオブジェクトを相互に呼び出す必要があります。イベント キューを処理する場合、それぞれがインタラクション全体の一部しか認識しません。私には魅力的に見えません...

また、基本的にはプロセス全体の抽象化であるため、Qt プロセスとオブジェクトQCoreApplicationの間に 1:1 の対応を強制することは理にかなっていると思います。QCoreApplication

技術的には、QCoreApplication::instance()またはそれぞれのqAppマクロには、明らかに単一のQCoreApplicationインスタンスが必要です。

于 2012-07-23T21:04:54.773 に答える
1

QApplicationメッセージループなどとして、いくつかのシングルトンが含まれています。

于 2012-07-24T11:31:15.673 に答える