J'essayais de créer une application console simple pour essayer l'analyseur XML de Qt. J'ai démarré un projet dans VS2008 et j'ai obtenu ce modèle:
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
return a.exec();
}
Comme je n'ai pas besoin de traitement des événements, je me demandais si je pourrais avoir des problèmes si je néglige de créer une QCoreApplication et d'exécuter la boucle d'événements. La documentation indique que c'est recommandé dans la plupart des cas.
Par curiosité, je me demande cependant comment faire en sorte qu'une tâche générique s'exécute sur la boucle d'événements, puis ferme l'application. Je suis incapable de google un exemple pertinent.
Voici un moyen simple de structurer une application si vous souhaitez exécuter une boucle d’événements.
// main.cpp
#include <QtCore>
class Task : public QObject
{
Q_OBJECT
public:
Task(QObject *parent = 0) : QObject(parent) {}
public slots:
void run()
{
// Do processing here
emit finished();
}
signals:
void finished();
};
#include "main.moc"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// Task parented to the application so that it
// will be deleted by the application.
Task *task = new Task(&a);
// This will cause the application to exit when
// the task signals finished.
QObject::connect(task, SIGNAL(finished()), &a, SLOT(quit()));
// This will run the task from the application event loop.
QTimer::singleShot(0, task, SLOT(run()));
return a.exec();
}
N'oubliez pas d'ajouter le
CONFIG += console
indicateur dans le fichier qmake .pro.
Pour le reste, nous n'utilisons que certaines classes Qt. L’une des méthodes que j’utilise est de générer des processus multi-plateformes.
Vous n'avez pas du tout besoin de QCoreApplication
, incluez simplement vos objets Qt comme d'autres objets, par exemple
#include <QtCore>
int main()
{
QVector<int> a; // Qt object
for (int i=0; i<10; i++)
{
a.append(i);
}
/* manipulate a here */
return 0;
}
J'ai réussi à créer une console simple "Bonjour tout le monde" avec QT Creator
créateur utilisé 2.4.1 et QT 4.8.0 sur Windows 7
deux façons de le faire
C++ simple
faire ce qui suit
ou
Console QT
exemple: pour la console QT "hello world"
file - nouveau projet de fichier 'nom du projet'
autres projets - QT Console Application
Cibles sélectionnez 'Bureau'
gestion de projet - next
code:
#include <QtCore/QCoreApplication>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
cout<<" hello world";
return a.exec();
}
ctrl -R pour courir
compilateurs utilisés pour MSVC 2010 (SDK) et minGW (SDK).
espérons que cela aide quelqu'un
Comme je viens juste de commencer à utiliser QT récemment et que je cherche aussi sur le Www des informations et des exemples pour commencer avec des exemples simples, toujours à la recherche ...
Vous pouvez appeler QCoreApplication :: exit (0) pour quitter avec le code 0
Vous pouvez déclencher un événement dans l'emplacement quit () de votre application même sans connect () . Ainsi, la boucle d'événements effectue au moins un tour et doit traiter les événements dans votre logique main ():
#include <QCoreApplication>
#include <QTimer>
int main(int argc, char *argv[])
{
QCoreApplication app( argc, argv );
// do your thing, once
QTimer::singleShot( 0, &app, &QCoreApplication::quit );
return app.exec();
}
N'oubliez pas de placer CONFIG += console
dans votre fichier .pro ou de définir consoleApplication: true
dans votre .qbs Project.CppApplication.