Qt中绑定信号槽之后,信号槽无效

下面程序编译没有错误,运行却未达到想要的效果,最后调试发现,是信号槽绑定后无效,即槽函数没有受到信号的触发。具体代码如下:
main.cpp

#include <QtCore>
#include "controller.h"
#include "mythread.h"int main(int argc,char*argv[])
{QCoreApplication app(argc,argv);Controller controler;controler.startThread();return app.exec();
}

controller.h

#ifndef CONTROLLER_H
#define CONTROLLER_H#include <QObject>
#include <QThread>class mythread;class Controller : public QObject
{Q_OBJECT
public:explicit Controller(QObject *parent = nullptr);void startThread();void stopThread();signals:void threadStopped();void threadStarted();void threadHasStopped();
public slots:void slot_dealThreadStarted();void slot_timeout();//    void slot_threadStopped();//    void slot_threadHasStopped();
private:QThread thread;mythread *workThread;
};#endif // CONTROLLER_H

controller.cpp

#include "controller.h"
#include "mythread.h"
#include <QDebug>
#include <QTimer>Controller::Controller(QObject *parent) : QObject(parent)
{}void Controller::startThread()
{workThread = new mythread;workThread->moveToThread(&thread);connect(&thread,&QThread::finished,workThread,&mythread::deleteLater);connect(this,&Controller::threadStarted,this,&Controller::slot_dealThreadStarted);connect(this,&Controller::threadStopped,workThread,&mythread::slot_threadStopped,Qt::BlockingQueuedConnection);connect(this,&Controller::threadHasStopped,workThread,&mythread::slot_threadHasStopped,Qt::BlockingQueuedConnection);
//    connect(this,&Controller::threadHasStopped,this,&Controller::slot_threadHasStopped);
//    connect(this,&Controller::threadStopped,this,&Controller::slot_threadStopped);thread.start();emit threadStarted();QTimer *timer = new QTimer;connect(timer,&QTimer::timeout,this,&slot_timeout);
//    QTimer timer;
//    connect(&timer,&QTimer::timeout,this,&slot_timeout);timer->start(5000);
}void Controller::stopThread()
{if(thread.isRunning()){thread.quit();thread.wait();emit threadStopped();
//        timer->stop();qDebug()<<"线程被关闭!";return ;}emit threadHasStopped();
}void Controller::slot_dealThreadStarted()
{qDebug()<<tr("线程开始执行");
}void Controller::slot_timeout()
{qDebug()<<tr("5s之后:");stopThread();
}//void Controller::slot_threadStopped()
//{
//    qDebug()<<tr("线程退出!");
//}//void Controller::slot_threadHasStopped()
//{
//    qDebug()<<tr("线程已经执行完毕!");
//}

myThread.h

#ifndef MYTHREAD_H
#define MYTHREAD_H#include <QObject>class mythread : public QObject
{Q_OBJECT
public:explicit mythread(QObject *parent = nullptr);public slots:void slot_threadStopped();void slot_threadHasStopped();};
#endif // MYTHREAD_H

myThread.cpp

#include "mythread.h"
#include <QDebug>mythread::mythread(QObject *parent) : QObject(parent)
{}void mythread::slot_threadStopped()
{qDebug()<<tr("线程退出!");
}void mythread::slot_threadHasStopped()
{qDebug()<<tr("线程已经执行完毕!");
}

其中信号槽绑定文本中,下面这两个信号槽绑定没有实现想要的效果,似乎是信号槽无效。考虑到槽函数与信号不是在同一个线程中,所以在信号槽绑定无效的情况下,设置了第五个参数,但依旧没有达到效果。

connect(this,&Controller::threadStopped,workThread,&mythread::slot_threadStopped,Qt::BlockingQueuedConnection);
connect(this,&Controller::threadHasStopped,workThread,&mythread::slot_threadHasStopped,Qt::BlockingQueuedConnection);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523843.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis-Plus_查询返回实体对象还是map?

在常见场景下&#xff1a;返回数据建议使用map&#xff0c;不建议使用实体对象 /*** 1. 名字包含雨并且年龄小于40* sql&#xff1a;name like %雨% and age < 40* <p>* 应用场景&#xff1a;* 当表字段非常多&#xff0c;但是你只需要查询少数几列,* 没必要返回的泛型…

图解分布式架构的发展和演进 | 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;编注: 架构决定的系统的稳定性&#xff0c;扩展性和并发性&#xff0c;架构的演进是从…

qt中颜色对话框弹出时应用程序输出栏出现QWindowsWindow::setGeometry: Unable to set geometry 180x30+345+311 (frame: 202x8

引言 在项目中点击按钮&#xff0c;弹出颜色选择对话框&#xff0c;但同时应用程序会在应用程序输出一栏中显示 QWindowsWindow::setGeometry: Unable to set geometry 180x30345311 (frame: 202x86334266) on QWidgetWindow/"QColorDialogClassWindow" on "\…

MyBatis-Plus_LambdaQueryWrapper

查询专栏&#xff1a;建议使用LambdaQueryWrapper&#xff0c;防误写 /*** 这样写的好处防误写*/Testpublic void selectLambda() { // LambdaQueryWrapper<User> lambda new QueryWrapper<User>().lambda(); // LambdaQueryWrapper<User> lambdaQuer…

Hadoop精华问答 | 如何设置单个任务占用的内存量和CPU数目?

我们很荣幸能够见证Hadoop十年从无到有&#xff0c;再到称王。感动于技术的日新月异时&#xff0c;让我们再来看看关于Hadoop的精华问答。1Q&#xff1a;默认情况下&#xff0c;各个节点的负载不均衡&#xff08;任务数目不同&#xff09;&#xff0c;有的节点很多任务在跑&…

MyBatis-Plus_自定义sql

查询专栏&#xff1a;自定义查询sql 文章目录1. 在mapper接口中定义接口2. 在xml文件中书写sql3. 全局配置3.1 配置xml的位置3.2 配置实体类的位置4. 在实体类中测试5. 控制台输出1. 在mapper接口中定义接口 /*** 查询所有 有条件会自动拼接在where 后边当条件 单表操作** pa…

qt中下拉列表使用函数setCurrentText()设置当前显示值不能设置成功

解决方法 下拉列表设置当前显示的值&#xff0c;没有设置成功&#xff0c;是因为还需在设置前要设置下拉列表的可编辑属性为true&#xff0c;否则直接使用 函数setCurrentText&#xff08;&#xff09;设置不能成功。 const QString & strDefultSid m_sidStrList[0];//字…

Gartner:PaaS 和平台架构领域的 4 大趋势 | 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;Gartner公司已列出了2019年及以后影响平台即服务&#xff08;PaaS&#xff09;技术和平…

MyBatis-Plus_分页查询

查询专栏&#xff1a;myabtis 实现的分页为什么还要分页插件&#xff1f; 文章目录1. 创建分页插件2. 测试分页3. 自定义分页4. 测试自定义分页方法5. 控制台输出6. 多表操作1. 创建分页插件 Configuration public class MybatisPlusConfig {Beanpublic PaginationInterceptor…

qt设置滚动区域的滚动条的样式

引言 当窗口的控件太多&#xff0c;不能一下完全显示&#xff0c;就可以采用滚动区域来添加控件&#xff0c;这样添加的控件&#xff0c;可以通过滑动滚动区域的滚动条来浏览所有的控件。下面就大致记录一下滚动区域的滚动条的样式怎么设置。 实现 直接上设置滚动区域的滚动…

MyBatis-Plus_更新操作

查询专栏&#xff1a;MP默认查询原则 查询的是数据库列名非实体类属性 文章目录Component public class UserMapperUpdateTest extends MybatisPlusSamplesChapter1ApplicationTests {Resourceprivate UserMapper userMapper;Testpublic void updateById(){User user new User…

什么叫云原生应用?| 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a;吕建伟转自&#xff1a;阿朱说&#xff08;1&#xff09;从Function到…

qt中设置父窗口中某一控件样式后,子窗口中某一控件也随父控件样式

引言 创建的窗口中含有滚动区域&#xff0c;滚动区域创建了很多按钮&#xff0c;点击按钮后弹出一个弹框&#xff0c;当设置了滚动区域的中心窗口的背景样式后&#xff0c;之前设置好的点击后按钮弹出框的背景样式也跟随着变化了。 方法 究其原因是因为滚动区域的窗口与点击…

MyBatis-Plus_删除操作

删除专栏 文章目录Component public class UserMapperDelTest extends MybatisPlusSamplesChapter1ApplicationTests {Resourceprivate UserMapper userMapper;/*** 根据 ID 删除*/Testpublic void delById() {int rows userMapper.deleteById(1094592041087729666L);System.o…

拙见之drawPath()与fillPath

阐述 此文仅记录标题中说的函数drawPath与fillPath的一点区别。 编写项目的过程中发现drawPath可以根据对画笔和画刷的设置&#xff0c;所绘制的图形含有边框和内部填充颜色&#xff0c;而fillPath即使设置了画笔和画刷的颜色&#xff0c;只会在绘制的图形中填充颜色&#xff…

MyBatis-Plus_AR 模式

查询专栏&#xff1a;MP默认查询原则 查询的是数据库列名非实体类属性 文章目录AR 模式1. 实体类对象继承Model2. 接口服务类继承baseMapper接口3. 测试ARAR 模式 1. 实体类对象继承Model EqualsAndHashCode(callSuper false) Data public class User extends Model<User…

500位开发者要在杭州搞事情!CTA峰会嘉宾全阵容揭秘

戳蓝字“CSDN云计算”关注我们哦&#xff01;扫描二维码&#xff0c;立享折扣。5 月 26 日- 5 月 27 日&#xff0c;由中国 IT 社区 CSDN 与数字经济人才发展中心联合主办的第一届 CTA 核心技术及应用峰会将在杭州国际博览中心召开。首届 CTA 核心技术及应用峰会将围绕人工智能…

记录一种多个按钮中每次只能选中一个的实现方式

阐述 本文旨在说明实现的思路。 当窗口创建很多QPushButton或者QPushButton的子类的时候&#xff0c;若要实现在众多的按钮中&#xff0c;每次被点击的按钮被选中&#xff0c;下一次点击另一个按钮的时候&#xff0c;上一个被选中的按钮恢复被选中之前的颜色&#xff0c;可以使…

MyBatis-Plus_通用service

通用service 文章目录1. 接口类继承 IService2. 接口实现类中继承ServiceImpl1. 接口类继承 IService<T> public interface UserService extends IService<User> { }2. 接口实现类中继承ServiceImpl<M,T> Service public class UserServiceImpl extends Se…

Storm精华问答 | Spark与Storm的区别有哪些?

戳蓝字“CSDN云计算”关注我们哦&#xff01;Storm是Twitter开源的分布式实时大数据处理框架&#xff0c;被业界称为实时版Hadoop。随着越来越多的场景对Hadoop的MapReduce高延迟无法容忍&#xff0c;比如网站统计、推荐系统、预警系统、金融系统等&#xff0c; 大数据实时处理…