Qt多线程

这篇具有很好参考价值的文章主要介绍了Qt多线程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先看一个示例:

void Widget::on_pushButton_clicked()
{
    while(1)
    {
        int a=1;
        a=2;
    }
}

Qt多线程,qt,开发语言

点击pushbutton后:

Qt多线程,qt,开发语言

程序无响应啦。因为一直都在进行那个死循环。

推广一下场景:某个操作的计算量特别大,会耗时很久,如果在主线程中进行计算,页面会卡住,这时候就需要用到多线程啦。

参考:

Qt中多线程写法一(步骤讲解+代码+加演示)_qt实训多线程-CSDN博客

#ifndef TRY_THREAD_H
#define TRY_THREAD_H

#include <QObject>
#include <QThread>
class try_thread : public QThread
{
    Q_OBJECT
public:
    explicit try_thread(QObject *parent = nullptr);
protected:
    void run();
};

#endif // TRY_THREAD_H
#include "try_thread.h"
#include <QDebug>
try_thread::try_thread(QObject *parent) : QThread(parent)
{

}
void try_thread::run()
{
    qDebug()<<"son:"<<QThread::currentThreadId();
    while(1)
    {
        int a=1;
        a=2;
        qDebug()<<a;
    }
}
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    qDebug()<<"main:"<<QThread::currentThreadId();
    connect(this,SIGNAL(destroyed()),this,SLOT(quitThreadSlot()));
}
void Widget::on_pushButton_clicked()
{
    t=new try_thread(this);
    t->start();
}

void Widget::quitThreadSlot()
{
    t->quit();
    t->wait();
}

这样写页面就不会卡顿啦! 那个耗时的死循环在子线程中执行啦!

(要注意子线程的退出,销毁)

可以使用QThread::currentThreadId();来查看currentThreadId。文章来源地址https://www.toymoban.com/news/detail-803043.html

到了这里,关于Qt多线程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Linux C++多线程服务器 + Qt上位机开发 + STM32 + 8266WIFI的智慧无人超市

    针对传统超市购物车结账排队时间长、付款效率低的问题,提出了一种更符合现代社会人们购物方式-基于RFID的自助收银系统。习惯了快节奏生活的人们都会选择自助收银机结账,理由显而易见:自助收银机结账很方便,几乎不用排队,也不用近距离和收银员接触,在防疫时

    2024年03月10日
    浏览(85)
  • 【VisualStudio】基于 Visual Studio 使用 C++ 语言开发 Qt 环境配置教程

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 先上一张效果图,具体步骤主要分为以下三步。 这一步不再赘述,注意一定要安装 C++ 语言。 可以参考这个教程 Visual Studio 2022安装与使用教程。 这一步也不再赘述,网上搜索教

    2024年02月15日
    浏览(70)
  • 【Visual Studio】使用 C++ 语言,配合 Qt,开发了一个串口通信界面

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 我要使用的功能比较简单,主要包含扫描串口、打开串口、发送数据、接收数据、暂停按钮、停止按钮,因此接下里将围绕这几个功能依次更新。 我的工程项目名字叫 “GUI”。

    2024年02月11日
    浏览(71)
  • 【Visual Studio】报错 C2653,使用 C++ 语言,配合 Qt 开发串口通信界面

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 这个 Bug 是我做这个工程时遇到的:【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面。 使用 C++ 语言,配合 Qt 开发串口通信界面,在添加 Widget 做

    2024年02月11日
    浏览(55)
  • Qt学习:Qt 进程和线程之四,线程实际应用

    为了让程序尽快响应用户操作,在开发应用程序时经常会使用到线程。 对于耗时操作如果不使用线程,UI 界面将会长时间处于停滞状态,这种情况是用户非常不愿意看到的,我们可以用线程来解决这个问题。 大多数情况下,多线程耗时操作会与 UI 进行交互,比如:显示进度

    2024年02月13日
    浏览(40)
  • 【QT进阶】Qt线程与并发之线程和并发的简单介绍

    往期回顾: 【QT进阶】Qt http编程之实现websocket server服务器端-CSDN博客 【QT进阶】Qt http编程之实现websocket client客户端-CSDN博客 【QT进阶】Qt线程与并发之创建线程的三种方法(超详细介绍)-CSDN博客 主要是做一个简单的补充说明 1、线程 线程是程序执行的 最小单元 ,是操作系统

    2024年04月27日
    浏览(41)
  • Qt5.14.2 Qt多线程实战演练,全面掌握线程同步和线程池最佳实践

    多线程编程是每个开发者必须掌握的基本能力之一。在上一篇文章中,我们学习了Qt多线程编程的理论知识。本文将切入实战,提供多个案例代码,帮助你彻底掌握Qt的多线程编程实践技巧。 案例1: 使用QThread执行耗时任务 这个案例演示了如何通过继承QThread和重写run()函数,在

    2024年03月20日
    浏览(42)
  • 【QT专栏】QT中实现多线程的四种方式和线程同步

    目录 一、继承QThread 1.基本概念 2.操作流程 二、继承QObject(推荐) 1.基本概念 2.操作流程 三、继承QRunnable,配合QThreadPool实现多线程 1.外界通信 2.QMetaObject::invokeMethod()介绍 3.QMetaObject::invokeMethod()使用方式 四、使用QtConcurrent::run() 1.基本概念 2.操作流程 3.实现案例 五,线程同步

    2024年02月20日
    浏览(46)
  • QT基础篇(12)QT5多线程

    在任何一门语言中,多线程都是一个相对其他方面比较重要的点,这里面的知识体系很庞大,同步和异步之间的处理方式,以及IO多路复用等等各种进行性能优化的方面,在往上层一点我们不可能一直进行系统层次的调用,这样太费时间也太麻烦,就到设计模式这里,比如反

    2024年01月22日
    浏览(41)
  • 【Visual Studio】报错 ASSERT: “i >= 0 && i < size()“,使用 C++ 语言,配合 Qt 开发串口通信界面

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 这个 Bug 是我做这个工程时遇到的:【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面。 使用 C++ 语言,配合 Qt 开发串口通信界面,在调试动态绘图

    2024年02月11日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包