QT多线程下,信号槽分别在什么线程中执行,如何控制?

可以通过connect的第五个参数进行控制信号槽执行时所在的线程

connect有几种连接方式,直接连接、队列连接和 自动连接

直接连接(Qt::DirectConnection):信号槽在信号发出者所在的线程中执行
队列连接(Qt::QueuedConnection):信号在信号发出者所在线程中执行,槽函数在信号接收者所在线程中执行
自动连接(Qt::AutoConnection):多线程时队列连接函数,单线程时为直接连接。
示例:
mainwind.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include "testthread.h"
#include <QMainWindow>
#include <QThread>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    TestThread* thread1;
    QThread* th1;

private slots:
    void Test();
};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    qDebug() << "主线程ID" << QThread::currentThreadId();
    thread1 = new TestThread;
    th1 = new QThread;
    thread1->moveToThread(th1);
    connect(this,&MainWindow::destroyed,this,[=](){
        thread1->deleteLater();
    });
    th1->start();

    connect(ui->pushButton,&QPushButton::clicked,thread1,&TestThread::count,Qt::DirectConnection);
    connect(ui->pushButton_2,&QPushButton::clicked,thread1,&TestThread::count,Qt::QueuedConnection);
    connect(ui->pushButton_3,&QPushButton::clicked,thread1,&TestThread::count,Qt::AutoConnection);
    connect(ui->pushButton_4,&QPushButton::clicked,this,&MainWindow::Test,Qt::AutoConnection);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::Test()
{
    qDebug() << "线程ID:" << QThread::currentThreadId();
}


TestThread.h

#ifndef TESTTHREAD_H
#define TESTTHREAD_H

#include <QObject>

class TestThread : public QObject
{
    Q_OBJECT
public:
    explicit TestThread(QObject *parent = nullptr);

public slots:
    void count();
};

#endif // TESTTHREAD_H

TestThread.cpp

#include "testthread.h"
#include <QDebug>
#include <QThread>
#include <QDebug>

TestThread::TestThread(QObject* parent) : QObject(parent)
{

}

void TestThread::count()
{
    qDebug() << "线程ID:" << QThread::currentThreadId() ;

}

ui界面
在这里插入图片描述
输出结果:(以下依次为按钮从左到右的结果)
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

whereis命令是 Linux 和类 Unix 系统中的一个命令行工具,用于定位二进制程序、源代码和手册页(man pages)的位置

文章目录 1、whereis2、实例 1、whereis whereis 命令是 Linux 和类 Unix 系统中的一个命令行工具&#xff0c;用于定位二进制程序、源代码和手册页&#xff08;man pages&#xff09;的位置。当你想要快速找到某个程序或命令的安装位置时&#xff0c;whereis 命令会非常有用。…

关于无法定位程序输入点 SetDefaultDllDirectories于动态链接库KERNEL32.dll 上 解决方法

文章目录 1. ERNEL32.dll 下载2. 解决方法 &#x1f44d; 个人网站:【 洛秋小站】 1. ERNEL32.dll 下载 Windows 7 在安装postman时报错缺少动态链接库,提示缺少.NET Framework,这是因为本地缺少相应的dll文件导致的&#xff0c;这时就需要下载ERNEL32.dll文件&#xff0c;在解…

MySQl高级篇-查询优化篇

SQL性能分析 SQL性能下降原因&#xff1a; 查询语句写的烂索引失效&#xff08;数据变更&#xff09;关联查询太多join&#xff08;设计缺陷或不得已的需求&#xff09;服务器调优及各个参数设置&#xff08;缓冲、线程数等&#xff09; SQL调优过程&#xff1a; 观察&…

【大语言模型】私有化搭建-企业知识库-知识问答系统

下面是我关于大语言模型学习的一点记录 目录 人工智能学习路线 MaxKB 系统(基于大语言模型的知识问答系统) 部署开源大语言模型LLM 1.CPU模式(没有好的GPU&#xff0c;算力和效果较差) 2.GPU模式&#xff08;需要有NVIDIA显卡支持&#xff09; Ollama网络配置 Ollama前…

nodejs安装部署运行vue前端项目

文章目录 1.安装nodejs2.安装Vue CLI1.配置npm镜像源&#xff1a;2.安装Vue CLI&#xff1a;3.创建Vue项目4.启动Vue项目5.Express 1.安装nodejs Node.js 是一个免费、开源、跨平台的 JavaScript 运行时环境&#xff0c;它让开发人员能够创建服务器、Web 应用、命令行工具和脚…

硬件基础学习笔记

关于硬件基础的知识整理 三极管&#xff08;两个PN节组成的器件&#xff09;MOSFET&#xff0c;场效应管&#xff08;Field Effect Transistor&#xff09;1、增强型场效应管符号&#xff1a;2、开关特性&#xff1a; 对于一些硬件知识&#xff0c;容易忘记需要反复记忆&#x…

【杰理蓝牙开发】AC632 开发板烧录实例

AC632 开发板烧录实例 0. 个人简介 && 授权须知1. 硬件板卡介绍2. 代码烧录2.1 使用USB接口烧录2.2 使用串口烧录 3. 为什么要用烧录器供电&#xff1f; 0. 个人简介 && 授权须知 &#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c…

量化投资基础(一)之Black-Litterman模型

点赞、关注&#xff0c;养成良好习惯 Life is short, U need Python 量化投资基础系列&#xff0c;不断更新中 1. 投资组合收益率与风险 假设市场有 N N N 个资产&#xff0c;其随机收益率分别为 R 1 , R 2 , … , R N R_1,R_2,\dots,R_N R1​,R2​,…,RN​ &#xff0c;对应…

【香橙派 AIpro测评:探索高效图片分类项目实战】

前言 最近入手了一块香橙派 AIpro开发板&#xff0c;在使用中被它的强大深深震撼&#xff0c;有感而发写下这篇文章。 本文旨在深入探讨OrangePi AIpro的各项性能&#xff0c;从硬件配置、软件兼容性到实际应用案例&#xff0c;全方位解析这款设备如何在开源社区中脱颖而出&am…

python中的类

类 类的创建 使用class关键字定义一个新的类 创建实例和使用 修改属性 类的访问权限&#xff08;只有属性和方法有访问权限&#xff09; 概念 种类 公有&#xff08;Public&#xff09;&#xff1a;公有成员可以被类的外部访问。这是默认的权限级别&#xff0c;如果不特别指定…

I2C子系统-内核视角

I2C驱动层级 内核自带的通用I2C驱动程序i2c-dev 编写一个设备驱动程序 控制器驱动程序I2C Adapter框架 GPIO模拟I2C&#xff0c;实现I2C_Adapter驱动 具体芯片下I2C_Adapter驱动 I2C驱动层级 一张图整理&#xff0c;可以看完后面的具体内容再回来看这张图&#xff1a; 接…

Docker的虚拟化安装、常用命令和使用案例

文章目录 一、Docker的虚拟机安装1、完成虚拟机的更新2、完成Docker安装3、配置镜像加速器 二、Docker常用命令三、Docker的容器创建四、理解虚拟机中的Docker容器 一、Docker的虚拟机安装 1、完成虚拟机的更新 详见我的文章。 2、完成Docker安装 yum list installed|grep …

第二周周日学习总结

题目总结 1. 给你一个仅由数字组成的字符串 s&#xff0c;在最多交换一次 相邻 且具有相同 奇偶性 的数字后&#xff0c;返回可以得到的 字典序最小的字符串 。 如果两个数字都是奇数或都是偶数&#xff0c;则它们具有相同的奇偶性。例如&#xff0c;5 和 9、2 和 4 奇偶性…

2024年7月9日~2024年7月15日周报

目录 一、前言 二、完成情况 2.1 特征图保存方法 2.1.1 定义网络模型 2.1.2 定义保存特征图的钩子函数 2.1.3 为模型层注册钩子 2.1.4 运行模型并检查特征图 2.2 实验情况 三、下周计划 一、前言 本周的7月11日~7月14日参加了机器培训的学习讨论会&#xff0c;对很多概…

六、 SpringBoot 配置⽂件 ★ ✔【value的引号注意事项、@ConfigurationProperties 、】

六、 SpringBoot 配置⽂件 本节⽬标1. 配置⽂件作⽤2. 配置⽂件快速⼊⼿3. 配置⽂件的格式4. properties 配置⽂件说明4.1 properties 基本语法4.2 读取配置⽂件4.3 properties 缺点分析 5. yml 配置⽂件说明5.1 yml 基本语法5.2 yml 使⽤进阶5.2.1 yml 配置不同数据类型及 nul…

记录些MySQL题集(1)

Innodb 是如何实现事务的&#xff1f; InnoDB是MySQL数据库的一个存储引擎&#xff0c;它支持事务处理。事务处理是数据库管理系统执行过程中的一个逻辑单位&#xff0c;由一个或多个SQL语句组成&#xff0c;这些语句要么全部执行&#xff0c;要么全部不执行&#xff0c;是一个…

Poetry2Image:专为中文古诗词图像生成,忠于原诗意境和语义。

直接基于文本的图像生成通常会导致丢失图像中的关键元素。为了解决此问题&#xff0c;哈工大提出Poetry2Image&#xff0c;通过实施有针对性的图像校正解决这个问题&#xff0c;有效地捕捉这首诗所传达的语义和艺术精髓。 Poetry2Image流程分为如下几步&#xff1a; 搜索和翻译…

免费进销存软件哪个好用?首选象过河

在快节奏的商业环境中&#xff0c;进销存管理一直是不可忽视的重要环节&#xff0c;关乎着企业的运营成本控制和运营效率的高低。传统的纸质记录已难以满足企业发展需求&#xff0c;很多企业管理者为了节约成本&#xff0c;都想寻找一款免费进销存软件。那么&#xff0c;免费进…

(day18) leetcode 204.计数质数

描述 给定整数 n &#xff0c;返回 所有小于非负整数 n 的质数的数量 。 示例 1&#xff1a; 输入&#xff1a;n 10 输出&#xff1a;4 解释&#xff1a;小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2&#xff1a; 输入&#xff1a;n 0 输出&#xff1a;0示例 3…

计算机系统复习——文件系统和目录

文件系统 存储管理&#xff1a; 文件系统负责将文件存储在存储设备&#xff08;如硬盘、固态硬盘&#xff09;中&#xff0c;并记录文件的位置和大小。 文件访问控制&#xff1a; 文件系统管理文件的访问权限&#xff0c;确保只有授权用户可以读取、写入或执行文件。 数据…