#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.");

}
---------------------
作者:yunshouhu
来源:CSDN
原文:https://blog.csdn.net/earbao/article/details/53771496
版权声明:本文为博主原创文章,转载请附上博文链接!

QObject::connect可以对不继承QObject的类也使用信号槽的更多相关文章

  1. QT运行出错:QObject::connect: Parentheses expected以及QObject::connect: No such slot ***

    我在QGraphicsScene子类中添加了item的弹出菜单,并连接Action到槽函数,结果槽函数不起作用,输出:QObject::connect: No such slot ***  C++ C ...

  2. Qt 信号和槽异常: QObject::connect: No Such slot baseClassName::subClassfunction() in ......

    2019-08-14起笔 小熊的情况描述: 父类A继承自QWidget,所以父类A自动添加了Q_OBJECT.  子类B继承自父类A,子类B没有添加Q_OBJECT.在子类B中给动态创建的控件添加事件 ...

  3. Qt - 错误总结 - QObject::connect: Cannot queue arguments of type 'PVCI_CAN_OBJ' (Make sure 'PVCI_CAN_OBJ' is registered using qRegisterMetaType().)

    背景:一个线程通过signal-slot发送PVCI_CAN_OBJ类型的值到主线程中, 错误提示: QObject::connect: Cannot queue arguments of type ...

  4. 很多人以为 connect 和 disconnect 应该像 new 和 delete 一样成对出现 这是错误的(只要 sender 或 receiver 其中之一不存在了,connect 会自动失效。QObject::connect 函数是线程安全的)

    其实我写文章也是边查资料边编辑的 有时候是怕自己的阐述不严谨,有时候是怕自己重复造轮子 就像有些人不停的教大家QLabel QDialog QWidget 个人是不屑的 命令模式 用 Qt's Und ...

  5. Qt error ------ no matching function for call to QObject::connect(QSpinBox*&, <unresolved overloaded function type>, QSlider*&, void (QAbstractSlider::*)(int))

    connect(ui->spinBox_luminosity,&QSpinBox::valueChanged, ui->horizontalSlider_luminosity, & ...

  6. 不能继承于QObject的类就一定不能使用信号槽?(用一个代理类进行发射就行了)

    首先不能继承QObject的情况在开发中遇到得并不多,笔者在一年多的Qt项目开发中只遇到两三次.而且都是因为引进了第三方库导致编译过程中报错. 要想解决这个问题其实不难,因为笔者遇到的问题都是想定义一 ...

  7. Qt Connect 信号 槽

    信号和槽机制是 QT 的核心机制 .信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性,也是 QT 区别于其它工具包的重要地方.信号和槽是 QT 自行定义的一种通信机制,它独立于标准 ...

  8. QT信号槽connect的第五个参数

    用过QT的小伙伴都知道连接信号槽的connect方法,但是这个方法有第五个参数,一般都是用的默认的 connect(th,SIGNAL(started()),tmpmyobject,SLOT(show ...

  9. QT 信号槽connect中解决自定义数据类型或数组作为函数参数的问题——QT qRegisterMetaType 注册MetaType——关键:注册自定义数据类型或QMap等容器类

    一般情况下信号槽直接连接方式不会出现问题,但是如果信号与槽在不同线程或Qt::QueuedConnection方式连接,可能会在连接期间报以下类似问题,如: QObject::connect: Can ...

随机推荐

  1. H5-Mui框架——修改mui.confirm样式

    问题简述: 使用mui框架默认提示框时,感觉与整体布局不符,因此想要更改其中的样式. 首先,查了一下资料:mui.toast样式风格及位置修改教程 以下是转载过来的文章内容. ============ ...

  2. laravel中orderBy使用

    laravel中orderBy使用 一.总结 一句话总结: 链式操作:laravel中的数据库操作可以是链式操作,所以类似这种想要多个orderBy效果的就直接接在后面写就可以了 User::orde ...

  3. HearthBuddy 突袭 rush

    https://hearthstone.gamepedia.com/Rush Rush is an ability allowing a minion to attack other minions ...

  4. outlier异常值检验算法之_箱型图(附python代码)

    python机器学习-乳腺癌细胞挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...

  5. Android 电量优化

    Android系统上App的电量消耗主要由cpu.wakelock.数据传输(流量和wifi).wifi运行.gps.other senior组成,而耗电异常也是由于这几个模块的使用不当. Broad ...

  6. 加载自定义目录下的springmvc.xml配置文件

    在默认情况下:springmvc框架的配置文件必须叫<servlet-name>-servlet.xml 且必须放在/WEB-INF/目录下,我们可以在web.xml文件中,为Dispat ...

  7. easyUI之numberspinner数字微调框

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  8. 用R语言求置信区间

    用R语言求置信区间 用R语言求置信区间是很方便的,而且很灵活,至少我觉得比spss好多了. 如果你要求的只是95%的置信度的话,那么用一个很简单的命令就可以实现了 首先,输入da=c(你的数据,用英文 ...

  9. Vuex模块:开启命名空间

    模块开启命名空间后,享有独自的命名空间. { "模块1":{ state:{}, getters:{}, mutations:{}, actions:{} }, "模块2 ...

  10. JSX AS DSL? 写个 Mock API 服务器看看

    这几天打算写一个简单的 API Mock 服务器,老生常谈哈?其实我是想讲 JSX, Mock 服务器只是一个幌子. 我在寻找一种更简洁.方便.同时又可以灵活扩展的.和别人不太一样的方式,来定义各种 ...