我对QT完全陌生,我想准备一个窗口并从用户那里获取一些输入,然后使用此输入运行一个控制台并在控制台中显示输出。我试图在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()之后;什么都没发生。 所以我在互联网上搜索,然后在stackoverflow中找到以下主题: How to call function after window is shown?
但是我想结束图形窗口,然后执行我的过程。
答案 0 :(得分:1)
您需要致电QCoreApplication::exit()
才能使exec
拥有控制权。
调用此函数后,应用程序离开主事件循环,并从调用返回exec()。 exec()函数返回returnCode。如果事件循环未运行,则此功能不执行任何操作。
一个简单的例子是:
//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;
}