QT中的耗时操作放到子线程中执行

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

代码中有sleep的话,如果不放到子线程中执行,会将主线程卡死。

子线程的.h文件

#ifndef THREAD_H
#define THREAD_H

#include <QObject>
#include <QThread>

class Thread : public QThread
{
    Q_OBJECT
public:
    Thread();
    void run() override;
};

#endif // THREAD_H

子线程的.cpp文件

#include "thread.h"

Thread::Thread()
{

}

void Thread::run()
{
    Sleep(100);//耗时操作
}

调用的地方的.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include "thread.h"

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

    Thread th;


private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

调用的地方的.cpp文件文章来源地址https://www.toymoban.com/news/detail-562315.html

#include "mainwindow.h"
#include "ui_mainwindow.h"


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    
	th.start();//启动子线程
}


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

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

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

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

相关文章

  • PyQt应用程序中的多线程:使用Qt还是Python线程?

    多线程模块能够更加高效得完成任务,但是在PyQt 应用程序中实现多线程可以使用 Qt 的线程模块(QThread)或者 Python 的 threading 模块。两者各有优劣,具体选择取决于项目需求和个人偏好。下面我们将以案例来说明两种模块具体得优缺点。 1、问题背景 在 PyQt 应用程序中,编

    2024年02月22日
    浏览(55)
  • 【Threads and QObjects,Thread-Support in Qt Modules】线程和QObjects,Qt模块中的线程支持

    Threads 继承了 QObjects类。它发出信号来指示线程已开始执行或已完成执行,并提供一些槽函数。 更有趣的是,QObjects可以在多个线程中使用,发出调用其他线程中槽的信号,并将事件发布到“live”在其他线程中的对象。这是可能的,因为每个线程都允许有自己的事件循环。

    2024年02月04日
    浏览(50)
  • QT基础教程(QT中的文件操作)

    本篇文章我们来讲解QT中的文件操作,文件操作对于QT来说是非常重要的一个点,那么下面的话将给大家详细的讲解QT中的文件操作。 在QT中,文件操作是通过Qt的文件和目录处理类来完成的。以下是一些常用的文件操作功能: 1.打开和关闭文件: 使用QFile类可以在QT中打开和关

    2024年02月05日
    浏览(47)
  • Qt中UI对象只能在主线程中操作,那如何在子线程中操作UI呢

    在Qt中,UI对象只能在主线程中操作,因为Qt采用了事件循环机制,UI事件(如鼠标点击、键盘输入)都是在主线程中处理的。如果在子线程中直接操作UI对象,会导致线程安全问题。 如果需要在子线程中操作UI,可以采用信号槽机制或者Qt的线程间通信机制。 Qt中的信号槽机制

    2024年02月11日
    浏览(38)
  • QT踩坑之子线程不能操作UI,否则应用程序卡死

    QT易踩坑之在子线程中操作UI,造成应用程序卡死! 这里调用SDKGetMemberInfo()接口可能是个耗时操作,因此我们使用 QtConcurrent启动一个线程 来执行该函数,若返回值为0,则主界面弹出提示语\\\"Examples of briquette elves\\\"(如何弹出提示语就是另一个故事了,这里我们不过多关注,但重

    2024年02月06日
    浏览(91)
  • 【Qt】Qt中的拖放操作实现——拖放文件以及自定义拖放操作

    文章参考《Qt Creator快速入门(第三版)》。 拖放操作分为拖动Drag和放下Drop,Qt提供了强大的拖放机制,可在帮助文档中通过Drag and Drop查看。 在Qt中,数据拖动时会被存储为MIME类型(Multipurpose Internet Mail Extensions)。Qt提供QMimeData类表示MIME类型的数据,并使用QDrag类完成数

    2023年04月19日
    浏览(57)
  • 详解Qt中的JSON操作

    JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,因其简洁的结构、易读性以及与多种编程语言的良好兼容性,在现代Web服务、API交互以及数据持久化场景中得到了广泛应用。Qt作为一款功能强大的跨平台应用开发框架,自Qt 5.0起便内置了对JSON的支持,提供了方便

    2024年04月29日
    浏览(33)
  • QT子线程或自定义类操作访问主界面UI控件的几种方法

            QT创建窗体工程,一般在MainWindow或Dialog类里可以直接通过ui指针访问控件,但是添加新的类后又如何访问呢,可以通过以下几种方式: (1)例如有个自己定义的类CustomClass,在自定义类里包含主界面指针MainWindow * class MainWindow;   class CustomClass { public:     CustomCla

    2024年02月09日
    浏览(59)
  • PyQt5 执行耗时操作导致界面卡死或未响应的解决办法

    当用PyQt5开发一个GUI界面 ,需要执行业务逻辑时,后台逻辑执行时间长,界面就容易出现卡死、未响应等问题。 在PyQt中,GUI界面本身就是一个处理事件循环的主线程,当进行耗时操作时,主线程GUI需要等待操作完成后才会响应,在等待这段时间,整个GUI就处于卡死的状态。

    2024年02月09日
    浏览(41)
  • Openssl数据安全传输平台016:在QT中的数据库操作+在项目中的设计与实现

    在Qt中进行数据库操作需要使用的类: QSqlDataBase 属于的模块: sql 使用这个类可以创建出一个连接数据库服务器的实例 单例

    2024年02月06日
    浏览(51)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包