QT线程中如何修改界面?

发布于 2022-07-26 06:28:58 字数 270 浏览 8 评论 3

我创建了一个网络监视线程,打算将这个线程分析的数据追加显示到一个 QTextEdit 控件上。
每当在这个线程中调用  QTextEdit->append (psDtata); 的时候,程序就出错误了。

我搜索了了QT文档,上说“只有 QApplication.exec() 主线程 才能对界面元素进行控制”。
在GTK多线程中操作界面,可以用 gdk_thread_enter()和gtk_thread_leave() 进入和离开临界区,请问在QT中该如何做呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

怎言笑 2022-08-06 07:27:23

学习了???!!!!!

风月客 2022-08-05 14:13:39

好呀

他是夢罘是命 2022-08-04 15:57:56

搞到半夜4点,终于解决了。

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

相关的部分代码:

/**
* @brief   线程管理类
*/

#include    <QThread>
class   MyThread :public  QThread
{
Q_OBJECT
public:
         virtual    void    run ();
signals:     //这里制造一个名为Log的信号
        void    Log                 (QString   sMessage);
};

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文