9
#include <QtGui/QApplication>
#include <QtDeclarative>
#include "qmlapplicationviewer.h"

int main(int argc, char **argv) {
    QApplication app(argc, argv);
    QmlApplicationViewer viewer;

    viewer.setMainQmlFile("app/native/assets/main.qml");
    viewer.showFullScreen();

    return app.exec();
}

私の C++ は少し錆びています。誰かが「QApplication app(argc, argv)」が何をしようとしているのか説明してもらえますか?

2 つの引数 (argc と argv) を取り、型 QApplication の変数を返す関数を宣言しようとしていますか?

4

4 に答える 4

12

この線

QApplication app(argc, argv);

タイプの新しいインスタンスを作成し、QApplicationこのクラスのコンストラクターを呼び出します。この例では、変数にappこのインスタンスが格納されています。これは、いくぶん(意味的に)これの省略形です:

QApplication app = QApplication(argc, argv);
于 2012-07-09T13:03:42.997 に答える
5

QtDocsからの引用は次のとおりです。

QApplicationクラスは、GUIアプリケーションの制御フローとメイン設定を管理します。

QApplicationには、ウィンドウシステムおよびその他のソースからのすべてのイベントが処理およびディスパッチされるメインイベントループが含まれています。また、アプリケーションの初期化、ファイナライズを処理し、セッション管理を提供します。さらに、QApplicationは、システム全体およびアプリケーション全体の設定のほとんどを処理します。

Qtを使用するGUIアプリケーションの場合、アプリケーションに常に0、1、2、またはそれ以上のウィンドウがあるかどうかに関係なく、QApplicationオブジェクトは1つだけです。GUI以外のQtアプリケーションの場合は、QtGuiライブラリに依存しないため、代わりにQCoreApplicationを使用してください。

QApplicationオブジェクトには、グローバルqAppポインターと同等のポインターを返すinstance()関数を介してアクセスできます。

だから、ライン

QApplication app(argc, argv);

QApplicationクラスのインスタンスを作成します。

于 2012-07-09T13:03:19.823 に答える
3

QApplicationは、メインイベントループを含むQtクラスです。

あなたが書くとき、あなたはこのクラスQApplication app(argc, argv); のオブジェクトを作成しています。appargcargv

プログラムの実行中にint main(int argc, char **argv)呼び出されると、プログラムのint argc実行中に渡された引数の数を含むように初期化されます。char **argvプログラムの実行時にプログラムに渡される引数の配列が含まれます。

char * argv [0]にはプログラムの名前が含まれ(ポイントされ)、後続の要素は渡された他の引数をポイントします。

次に、argcとargvがQApplicationのコンストラクターに渡されるため、プログラムの実行時にQt固有の引数を渡すことができます。

このような引数の例について./yourProgramName --helpは、ターミナルウィンドウで実行してみてください

于 2012-07-09T15:32:45.237 に答える
2

app() は関数ではなく、コンストラクター呼び出しです。

C# や Java などから来た場合は、次のように想像してください。

QApplication app = new QApplication( argc, argv );

そのアプリはこのようにポインターになりますが、例のように作成された場合、実際にはオブジェクト自体になります。

要するに、Qt はQApplication実行するインスタンスを必要とするため、シグナルとスロットが処理され (それらを使用している場合)、ペイントなどのイベントが処理されます。

于 2012-07-09T13:05:50.763 に答える