Qt 5.14 C++ 信号与槽函数的执行顺序

在多线程中,主线程输出数据,与传递到多线程输出数据对此。结论:数据输出是按照信号、槽函数等的先后执行顺序,没有优先级,只是在系统调试输出时,qDebug()有输出顺序,但是不会改变参数的变化。

//在UI线程中定义    
qDebug()<<QThread::currentThread()->objectName()<<"index start";
indexxx = 0;
qDebug()<<QThread::currentThread()->objectName()<<"index=0输出为:"<<indexxx;
indexxx++;
qDebug()<<QThread::currentThread()->objectName()<<"在tt(index)信号前 index=1 输出为:"<<indexxx;
emit tt(indexxx);
indexxx++;
qDebug()<<QThread::currentThread()->objectName()<<"在ui->pushButton_2->click()信号前 index=2 输出为:"<<indexxx;
ui->pushButton_2->click();
indexxx++;
qDebug()<<QThread::currentThread()->objectName()<<"index finished"<<indexxx;

其中connect(this, SIGNAL(tt(int)), b1, SLOT(ss(int))); b1为子线程,

void B::ss(int dexx){qDebug()<<QThread::currentThread()->objectName()<<"tt(index)信号传递过来index=1输出为:"<<dexx;}

系统输出顺序是:

"在主线程UI" index start
"在主线程UI" index=0输出为: 0
"在主线程UI" 在tt(index)信号前 index=1 输出为: 1
"在主线程UI" 在ui->pushButton_2->click()信号前 index=2 输出为: 2
"在子线程Name_threadAS" tt(index)信号传递过来index=1输出为: 1
"在主线程UI" 在ui->pushButton_2->click()槽函数中 index=2 输出为: 2
"在主线程UI" index finished 3

子线程输出有些滞后,应该是信号与槽函数传递需要耗费时间,但是传递的参数数值没有变化。

QThread::currentThread()->setObjectName("在主线程UI");可以设置线程的名字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值