QT线程中如何修改界面?
我创建了一个网络监视线程,打算将这个线程分析的数据追加显示到一个 QTextEdit 控件上。
每当在这个线程中调用 QTextEdit->append (psDtata); 的时候,程序就出错误了。
我搜索了了QT文档,上说“只有 QApplication.exec() 主线程 才能对界面元素进行控制”。
在GTK多线程中操作界面,可以用 gdk_thread_enter()和gtk_thread_leave() 进入和离开临界区,请问在QT中该如何做呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
学习了???!!!!!
好呀
搞到半夜4点,终于解决了。
采用的办法是: 利用 signal/slot 机制。在 线程类中创建一个 signal (信号), 在界面管理类中 创建一个 slot (槽)。每当线程需要修改界面的时候, 就发送一个需要修改界面的信号, 界面收到这个信号以后,会调用相应的 方法(槽)来处理。
相关的部分代码:
* @brief 线程管理类
*/
#include <QThread>
class MyThread :public QThread
{
Q_OBJECT
public:
virtual void run ();
signals: //这里制造一个名为Log的信号
void Log (QString sMessage);
};