Qt:moveToThread

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

moveToThread

该函数属于QObject,因此任何继承于QObject的对象都可以使用该函数。
使用该函数可以减少主线程界面刷新的压力

官方解释:
1:

更改此对象及其子对象的线程相关性。如果对象有父对象,则无法移动该对象。事件处理将在targetThread中继续。

解释:每一个QObject对象都有事件循环,默认子类事件是可以传递给父类的,界面(或者说是每一个部件)更新,调用的是就重绘事件(paint),正常而言我们只有一个主线程(一个事件循环),也就是main()函数中启动的QApplication::exec()。此时界面上的所有控件的鼠标、键盘相应事件,重绘事件(刷新界面)等都是在主线程中进行。

如果我们创建了一个新的QThread线程,之后将一个没有父对象的QObject调用moveToThread函数移动到这个线程中的话,那个这个QObject的事件循环就会运行在这个子线程中,也就是这个控件的刷新,各种事件响应函数都会在这个子线程中运行,包括这个空间发射的信号也是从子线程中发射的。

2:

要将对象移动到主线程,请使用QApplication::instance()来检索指向当前应用程序的指针,然后使用QAApplication::thread()来获取应用程序所在的线程。例如:myObject->moveToThread(QApplication::instance()->thread());

解释:一种方式,将已经移动到子线程中的QObject对象重新移动回主线程

3:

如果targetThread为nullptr,则此对象及其子对象的所有事件处理都将停止,因为它们不再与任何线程关联。

解释:如果我们在移动QObject对象时,targetThread(nullptr)传入了一个空的对象,则这个QObject将没有线程来负责他的事假循环,将不会有任何响应

4:

请注意,对象的所有活动计时器都将重置。计时器首先在当前线程中停止,然后在targetThread中重新启动(间隔相同)。因此,在线程之间不断移动对象可以无限期地推迟计时器事件。
QEvent::ThreadChange事件在线程相关性更改之前发送到此对象。您可以处理此事件以执行任何特殊过程

解释:QTimer有关的解释文章来源地址https://www.toymoban.com/news/detail-652840.html

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

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

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

相关文章

  • 【Qt】QThread & moveTothread-多线程的两种实现方法

    一、如何理解多线程 二、实现多线程的两种方式(面向应用) 2.1 继承 QThread 的类 2.2 (推荐这种方式)函数 moveTothread() 三、多线程的释放问题(善后工作) 类似我们单片机的编程,如在 Keil5 中对 51 单片机或者 STM32 单片机进行编程时,如果我们使用模块化编程,那么 main.c 文

    2024年02月01日
    浏览(45)
  • 【Qt】Qt 开发环境安装 ( Qt 版本 5.14.2 | Qt 下载 | Qt 安装 )

    Qt 开发环境下载地址 : https://download.qt.io/archive/qt/ 该界面可以下载 Qt 各个版本的开发环境 ; Qt 版本选择 , Qt 的各个大版本都在同步更新 , 如 5.1 , 5.9 , 5.14 , 6.0 等 , 每个版本都有不同的性能和功能 , 每个版本进入后的二级目录的小版本 , 尽量选择最新的版本 ; 如进入 5.14 目录后

    2024年02月14日
    浏览(68)
  • 【 Qt 的“前世”与“今生”】Qt 的起源 | Qt 的发展历程 | 为什么选择 Qt | Qt 的授权模式 | Qt 版本选择 | Qt Widgets和QML | Qt 程序发布

    目录 1、什么是 Qt ? 2、Qt 可以用来做什么? 3、Qt 的由来与发展 3.1、Qt 的起源与发展 3.2、Qt 发展经历的三家公司 4、为什么选择 Qt ? 5、Qt 支持的平台 6、Qt 的授权模式 7、Qt 版本的选择 8、选择 QML 还是 Qt Widgets? 8.1、什么是 Widgets ? 8.2、什么是 QML ? 8.3、Widgets 与 QML 工程

    2024年02月05日
    浏览(61)
  • Qt不会操作?Qt原理不知道? | Qt详细讲解

    UI界面与控件类型介绍 Qt设计器原理 Qt设计器(UI界面)是用于设计和构建带有Qt Widgets 的图形用户界面(QT GUI)。注意:必须在建立项目时勾选上.ui文件这一项 控件类型的介绍 信号与槽机制处理 信号与槽是用与对象之间的通信,是Qt的核心 注意:信号与槽不是C++标准代码,

    2023年04月08日
    浏览(37)
  • 【Qt 学习笔记】Qt 开发环境的搭建 | Qt 安装教程

    博客主页:Duck Bro 博客主页 系列专栏:Qt 专栏 关注博主,后期持续更新系列文章 如果有错误感谢请大家批评指出,及时修改 感谢大家点赞👍收藏⭐评论✍ 文章编号:Qt 学习笔记 / 02 1. 安装包下载(网盘链接) 链接:https://pan.baidu.com/s/1t3jbYcFYFuJIfe0hPmeDmQ?pwd=duck 提取码:du

    2024年04月26日
    浏览(99)
  • QT设置二级菜单 QT获取命令行参数 QT获取系统环境变量 QT QStatusBar showMessage的坑

    提示: 可以使用 qss 或者一些接口函数对 QMenu 和 QAction 进行美化 在操作过程中,最开始使用的QT的GUI程序,因为GUI程序默认的标准输出是QTCREATOR的应用程序输出窗口,所以在命令行窗口是看不到的,但是这也是可以配置的qt在GUI显示时,将调试信息输出到控制台的设置。以上

    2023年04月09日
    浏览(49)
  • 【QT学习二】Qt Design中使用Qt的基本布局

    目录 概述 Qt Design中使用Qt的基本布局 控件在哪? 怎么使用? 直接拖拽布局控件 使用工具栏 Layout的属性 在我们使用Qt做界面设计时,为了界面的整洁美观,往往需要对界面中的所有控件做一个有序的排列,以及设置各个控件之间的间距等等,为此Qt为界面设计提供了基本布

    2024年02月08日
    浏览(42)
  • <QT开发> QT开发工具-之-QT应用程序打包

    <QT开发> QT开发工具-之-QT应用程序打包 笔者为什么会写这篇文章呢?这是因为,笔者使用windows QT开发了一个测试工具。目的是通过TCP/IP测试其它应用程序。首先这个QT程序是笔者自己开发的,所以笔者的电脑当然是可以运行这个QT程序的,但是想要这个QT程序在其它同事的

    2024年02月12日
    浏览(152)
  • QT qt 3d 绘图

    首先不得不说,要感谢北京邮电大学的阿科。感谢他慷慨的分享和极具科学态度的记录,将自己搜集到的众多资料收集整理发布,拯救众多苦逼寻找方案的程序员于苦海之中。因为最近接手新的项目,涉及到使用opengl做surface plot编程。第一个想到的就是能否使用现有的开源

    2024年02月02日
    浏览(40)
  • 【Qt开发】初识Qt

    Qt是⼀个 跨平台的C++图形⽤⼾界⾯应⽤程序框架 。它为应⽤程序开发者提供了建⽴艺术级图形界⾯所需的所有功能。它是 完全面向对象 的,很容易扩展。Qt为开发者提供了⼀种 基于组件 的开发模式,开发者可以通过简单的拖拽和组合来实现复杂的应⽤程序,同时也可以使⽤

    2024年01月21日
    浏览(52)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包