How do I create a simple Qt console application in C++?

前端 未结 7 1044
别那么骄傲
别那么骄傲 2020-11-28 22:06

I was trying to create a simple console application to try out Qt\'s XML parser. I started a project in VS2008 and got this template:

int main(int argc, char         


        
相关标签:
7条回答
  • 2020-11-28 22:29

    Here is one simple way you could structure an application if you want an event loop running.

    // 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();
    }
    
    0 讨论(0)
  • 2020-11-28 22:29

    You can call QCoreApplication::exit(0) to exit with code 0

    0 讨论(0)
  • 2020-11-28 22:33

    Don't forget to add the

    CONFIG += console 
    

    flag in the qmake .pro file.

    For the rest is just using some of Qt classes. One way I use it is to spawn processes cross-platform.

    0 讨论(0)
  • 2020-11-28 22:33

    You could fire an event into the quit() slot of your application even without connect(). This way, the event-loop does at least one turn and should process the events within your main()-logic:

    #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();
    }
    

    Don't forget to place CONFIG += console in your .pro-file, or set consoleApplication: true in your .qbs Project.CppApplication.

    0 讨论(0)
  • 2020-11-28 22:39

    Had the same problem. found some videos on Youtube. So here is an even simpler suggestion. This is all the code you need:

    #include <QDebug>
    
    int main(int argc, char *argv[])  
    {
       qDebug() <<"Hello World"<< endl;
       return 0;
    }
    

    The above code comes from Qt5 Tutorial: Building a simple Console application by

    Dominique Thiebaut

    http://www.youtube.com/watch?v=1_aF6o6t-J4

    0 讨论(0)
  • 2020-11-28 22:49

    You don't need the QCoreApplication at all, just include your Qt objects as you would other objects, for example:

    #include <QtCore>
    
    int main()
    {
        QVector<int> a; // Qt object
    
        for (int i=0; i<10; i++)
        {
            a.append(i);
        }
    
        /* manipulate a here */
    
        return 0;
    }
    
    0 讨论(0)
提交回复
热议问题