博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程中如何修改界面
阅读量:4108 次
发布时间:2019-05-25

本文共 890 字,大约阅读时间需要 2 分钟。

转自

http://blog.csdn.net/zhangshan415/article/details/7901223

采用的办法是: 利用 signal/slot 机制。在 线程类中创建一个 signal (信号), 在界面管理类中 创建一个 slot (槽)。每当线程需要修改界面的时候, 就发送一个需要修改界面的信号, 界面收到这个信号以后,会调用相应的 方法(槽)来处理

相关的部分代码:
/**
* @brief   线程管理类
*/

#include    <QThread>
class   MyThread :public  QThread
{

Q_OBJECT
public:
         virtual    void    run ();
signals:     //这里制造一个名为Log的信号
        void    Log                 (QString   sMessage);
};


/**
* @brief   窗口管理类 
*/

#include    <QMainWindow>
class    MainWindow : public  QMainWindow
{

Q_OBJECT  
private:
      QTextEdit     m_qeLog;
public slots:  //这里制造一个名为Log的回调(槽),这个回调会对界面的一个QTextEdit控件追加一行文字(参数sMessage)
void    Log                 (QString   sMessage) {

    m_qeLog.append(sMessage);
}
};


    // 注册,其中Thread是类 MyThread的一个实例,window是类MainWindow的实例
QObject::connect(&Thread, SIGNAL(Log(QString)), &Window, SLOT(Log(QString)));


/**
* @brief   线程运行函数 
*/

void    MyThread::run ()
{

     //......省略一些分析网络数据的代码
//发射一个Log信号,这样主线程就可以安全的对界面进行修改了
emit   Log(QString("<分析出来的数据>");

你可能感兴趣的文章
Palindrome Number --回文整数
查看>>
Reverse Integer--反转整数
查看>>
Container With Most Water --装最多水的容器(重)
查看>>
Longest Common Prefix -最长公共前缀
查看>>
Letter Combinations of a Phone Number
查看>>
Single Number II --出现一次的数(重)
查看>>
Valid Parentheses --括号匹配
查看>>
Generate Parentheses--生成匹配括号(重)
查看>>
Remove Element--原地移除重复元素
查看>>
Remove Duplicates from Sorted Array--从有序数组中移除重复元素
查看>>
Count and Say
查看>>
Gas Station
查看>>
Palindrome Partitioning --回文切割 深搜(重重)
查看>>
Valid Palindrome 简单的回文判断
查看>>
Pascal's Triangle -- 生成杨辉三角
查看>>
Pascal's Triangle II 生成杨辉三角中的某行
查看>>
Minimum Depth of Binary Tree -- 二叉树的最小深度 DFS 加剪枝
查看>>
Climbing Stairs 爬楼梯方法 动态规划
查看>>
Merge Two Sorted Lists 合并两个有序链表
查看>>
pow(x,n) 为什么错这么多次
查看>>