Qu'est-ce que “QApplication app(argc, argv)” essaie de faire?
#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();
}
Mon C++ est un peu rouillé. Quelqu'un peut-il m'expliquer ce qu'est "QApplication app(argc, argv)" essaie de faire ?
Est-ce que cela veut déclarer une fonction qui prend 2 arguments (argc et argv) et le retour d'une variable de type QApplication ?
OriginalL'auteur user996659 | 2012-07-09
Vous devez vous connecter pour publier un commentaire.
La ligne
crée une nouvelle instance de type
QApplication
et appelle le constructeur de cette classe. Dans votre exemple, la variableapp
maintenant des magasins de cette instance. Il est un peu (sémantiquement) une abréviation de ce:avec
new
vous avais allouer dynamiquement un objet sur le tas. Lorsque vous utiliseznew
vous obtenez un pointeur à la place. De sorte que vous avez à faire cela:QApplication* app = new QApplication(argc, argv);
OriginalL'auteur Constantinius
Voici une citation de Qt Docs:
Donc, la ligne
QApplication app(argc, argv);
crée une instance de la classe QApplication.
OriginalL'auteur SingerOfTheFall
QApplication est une classe Qt qui contient la boucle principale.
Lorsque vous écrivez
QApplication app(argc, argv);
vous êtes à la création d'un objet
app
de cette classe, en appelant son constructeur avecargc
etargv
Quand
int main(int argc, char **argv)
est appelé lors de l'exécution du programme,int argc
est initialisée à contenir le nombre d'arguments passés lors de l'exécution du programme.char **argv
contient un tableau d'arguments passés au programme lors de l'exécution.char* argv[0] contiendra (point) le nom du programme, tandis que les éléments suivants ne sont point à l'autre les arguments passés.
argc et argv sont à son tour, transmis au constructeur de QApplication, de sorte que l'on peut passer à Qt arguments spécifiques lors de l'exécution de votre programme.
Pour un exemple de tels arguments essayez d'exécuter
./yourProgramName --help
dans une fenêtre de terminalOriginalL'auteur flak37
app() n'est pas une fonction, c'est un appel de constructeur.
Si vous venez à partir de C# ou Java, ou quelque chose, imaginer comme
Seulement cette application serait un pointeur de cette façon, alors qu'il est en réalité l'objet lui-même s'il est créé, comme dans votre exemple.
En bref, Qt a besoin d'un
QApplication
exemple, pour exécuter de manière signaux&les fentes sont traitées (si vous utilisez) et des événements comme la peinture etc sont traitésOriginalL'auteur Tim Meyer