qt控制台程序在window直接退出方法

24 篇文章 0 订阅
#include <QCoreApplication>
#include <QDebug>
#include <QObject>
#include <QThread>
#include <string>
#include <iostream>
#include "mythread.h"
using namespace std;

//qt控制台程序在window直接退出方法。
int main(int argc, char *argv[])
{
    QString str;
    QTextStream out(stdout);
    out<<"input data"<<endl;
    QTextStream in(stdin);
    in >> str;

    out<<"input str="<<str<<endl;

    QCoreApplication a(argc, argv);

    MyThread *mythread=new MyThread();

    //退出方法二 通过在子线程里面调用quit(),退出整个程序
    QObject::connect(mythread,SIGNAL(finished()),&a,SLOT(quit()));
    mythread->start();

    qDebug()<<"test ok"<<endl;\

    //这些直接退出失效?
    //a.quit();
    //a.exit(0);
   // QCoreApplication::exit(0);
    //QCoreApplication::quit();
    qDebug()<<"test quit"<<endl;
    //exit(0);//退出方法一
    return a.exec();
    //return 0;
}

#ifndef MYTHREAD_H
#define MYTHREAD_H

#include <QObject>
#include <QThread>


class MyThread : public QThread
{
    Q_OBJECT
public:
    explicit MyThread(QObject *parent = 0);

protected:
    void run();
};

#endif // MYTHREAD_H

#include "mythread.h"
#include <string>
#include <iostream>
using namespace std;

MyThread::MyThread(QObject *parent):QThread(parent)
{

}

void MyThread::run()
{
    char *pszTip = "Press 'Q' exit application.\n";
    printf("%s\n", pszTip);
    /*
    while (true)
    {
        std::string line;
        std::cin>>line;
        std::cout<<line<<std::endl;
        printf("%s", pszTip);
        if (line.compare("Q")==0)
        {
            break;
        }
    }
    */

    printf("Done.");


}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值