以下は Qt のドキュメントからの引用です。
Qt を使用する GUI アプリケーションには、正確に 1 つの QApplication オブジェクトがあります。
それは非常に明確です。しかし、私はその理由を理解できませんでした。面接でそのような質問をされたのですが、今となっては適切な答えが見つからないのですが、どなたか教えていただけませんか?
以下は Qt のドキュメントからの引用です。
Qt を使用する GUI アプリケーションには、正確に 1 つの QApplication オブジェクトがあります。
それは非常に明確です。しかし、私はその理由を理解できませんでした。面接でそのような質問をされたのですが、今となっては適切な答えが見つからないのですが、どなたか教えていただけませんか?
QCoreApplication
ドキュメントはヒントを提供します:
QCoreApplication にはメインのイベント ループが含まれており、オペレーティング システム (タイマーやネットワーク イベントなど) およびその他のソースからのすべてのイベントが処理され、ディスパッチされます。また、アプリケーションの初期化とファイナライズ、およびシステム全体とアプリケーション全体の設定も処理します。
また、任意の時点で (単一のスレッドで) 実行できるイベント ループは 1 つだけであるため、個別のQCoreApplication
オブジェクトを相互に呼び出す必要があります。イベント キューを処理する場合、それぞれがインタラクション全体の一部しか認識しません。私には魅力的に見えません...
また、基本的にはプロセス全体の抽象化であるため、Qt プロセスとオブジェクトQCoreApplication
の間に 1:1 の対応を強制することは理にかなっていると思います。QCoreApplication
技術的には、QCoreApplication::instance()
またはそれぞれのqApp
マクロには、明らかに単一のQCoreApplication
インスタンスが必要です。
QApplication
メッセージループなどとして、いくつかのシングルトンが含まれています。