如何结束图形 GUI 并执行控制台功能(QT)?

How to end graphic GUI and do console function(QT)?

我是 QT 的新手,我想准备一个 window 并从用户那里获取一些输入,然后使用此输入 运行 一个控制台并在控制台中显示输出。我试图在 exec 之后编写代码,但似乎不可能:

int main(int argc, char *argv[])
{
    int retmain = 0;
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    cout<<"pos500"<<endl;
    retmain = a.exec();
    cout<<"pos50"<<endl;
//doing something

    return retmain;
}

我不知道为什么,但是在 a.exec() 之后;什么都没发生。 所以我在互联网上搜索并在 Whosebug 中找到了以下主题: How to call function after window is shown?

但我想结束图形 window 然后再进行处理。

您需要调用 QCoreApplication::exit() 才能让 exec return 控制权交给您。

After this function has been called, the application leaves the main event loop and returns from the call to exec(). The exec() function returns returnCode. If the event loop is not running, this function does nothing.

一个简单的例子是:

//mainwindow.h
//////////////////////////////////////////////////
#pragma once
#include <QtWidgets/QMainWindow>
#include <QtCore/QCoreApplication>

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    MainWindow(QWidget *parent = 0);
    void closeEvent(QCloseEvent *event);
    ~MainWindow();
};

//mainwindow.cpp
//////////////////////////////////////////////////
#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
}
void MainWindow::closeEvent(QCloseEvent *event)
{
    QCoreApplication::exit(0);
    QMainWindow::closeEvent(event);
}
MainWindow::~MainWindow(){}

//main.cpp
//////////////////////////////////////////////////
#include "mainwindow.h"
#include <QApplication>

#include <iostream>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    a.exec();
    std::cout << "test" << std::endl;
    return 0;
}