QT非UI线程更新UI(跨线程更新UI)

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

笔者最近在弄一个QT的一个小工具,需要把日志格式化输出,但是方法的执行过程是耗时的,如果不自己进行处理就会阻塞主界面,瞬间降低软件的使用体验。

所以通过查资料发现QT的信号传递更新UI非常好用,记录一下,也给碰到类似问题的小伙伴直接提供一个参考。

首先,另起的UI线程需要自己重写类继承Qthread线程基类,需要Q_OBECT宏具体代码如下(我这里新建的命名位XThread的类)

XThread.h 如下
#include <QThread>


class XThread : public QThread
{
    Q_OBJECT
public:
    XThread();
protected:
    void run();
signals:
    void toUI(QString msg);
};
XThread.cpp 如下
#include "XThread.h"
XThread::XThread()
{

}

void XThread::run()
{
    emit toUI("发送给UI线程信号,这里是新开线程的主逻辑--------------------");
}

在UI类里面需要对对应的控件进行收取并指定对应的更新UI的具体逻辑:
例如(具体逻辑根据自己UI更新的逻辑来)文章来源地址https://www.toymoban.com/news/detail-528539.html

XThread  *xth = new XThread();
xth->start();
connect(xth,&XThread::toUI,this,&MainWindow::AddLog);
MainWindow::AddLog(QString msg){
		this->textedit->append(msg);
}

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

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

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

相关文章

  • 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的UI界面再运行却不能实时更新的解决方法】

    如博客标题所述。例如:当我们在ui界面中添加了某个控件(如按钮)之后,右键项目名称点击运行(对应绿色右三角),显示的界面却还是原来未修改的界面。 这个问题在网上已经有很详细的解释了。具体地,首先需要明白,在我们更改完ui界面、点击运行之后将会重新产

    2024年02月12日
    浏览(44)
  • Qt教程 — 2.1 如何使用Qt Designer 开发UI程序

    目录 1 Qt Designer简介 2 编辑UI界面 2.1 在 UI 界面添加一个Label 2.2 在 UI 界面添加一个按钮 2.3 在 UI 文件里连接信号与槽 方法一:通过信号和槽编辑栏 方法二:通过导航区信号和槽编按钮 方法三:通过跳转编辑代码实现—通过按钮输出文字 Qt Designer 是属于 Qt Creator 的一个功能

    2024年03月22日
    浏览(56)
  • [编程语言][C++][Qt]单独添加UI文件

    不知什么原因,Qt Creator并不是很完美很智能。当先写好界面类的头文件和源代码文件后,我们再添加用于可视化界面设计的UI文件时,会出现一些问题。 当使用CMake管理项目时,CMake会读取 CMakeLists.txt 文件来确定各种项目设置。需要把 MainWindow.ui 包含进项目时,在 CMakeLists.

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

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

    2024年02月09日
    浏览(59)
  • 【QT开发(5)】0919-QT里面新增ui类,新增使用opencv读取图片的普通类,在ui类中显示图片

    1、Qt Creator快速入门_第三版__霍亚飞编著 2、《Qt+OpenCV显示图片(Mat转QImage然后显示在QLabel上)》 https://gitee.com/hiyanyx/qt5.14-cpp_-empty_-project/tree/Study2023-section5/ git分支“Study2023-section5” 新增ui类 新增使用opencv读取图片的普通类 为了更加方便,可在QT 中添加普通类,这样会自动生

    2024年02月07日
    浏览(47)
  • QT QPluginLoader 插件开发 ui界面打包dll

     将项目模块化,每一个模块单独开发,模块的组成形成最终的主程序, 点击左侧按钮就会弹出对应的插件应用,每一个子窗口都是单独的dll 插件, 灵活,升级,下载,卸载。 效果:     打开QT Creator 新建插件开发项目  下一步后选择 Qt Plugin 开发 添加依赖库,在.pro里  

    2024年02月11日
    浏览(44)
  • QGIS开发五:VS使用QT插件创建UI界面

    前面我们说了在创建项目时创建的是一个空项目,即不使用 Qt 提供的综合开发套件 Qt Creator,也不使用 Qt Visual Studio Tools 这类工具。 但是后面发现,如果我想要有更加满意的界面布局,还是要自己写一个UI文件,如果不使用QT插件,在VS中导入自己的UI文件编译起来不是那么容

    2024年02月13日
    浏览(59)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包