请教,QT中如何避免界面被阻塞。

问题描述

请教,QT中如何避免界面被阻塞。
首先,我有一个子线程,一直在循环取数据,然后发送信号。
void MyThread::run(){
qDebug()<<""run thread:""<<QThread::currentThreadId();

while (true) { emit sendMsg(""hello""); }
}
然后,在主界面,主线程里面连接一个槽,在textbrowser里面显示。
ThreadForm::ThreadForm(QWidget *parent) :
QWidget(parent)
ui(new Ui::ThreadForm)
{
ui->setupUi(this);
qDebug()<<""main thread:""<thread = new MyThread();
//ui->textBrowser->setParent(0);
//ui->textBrowser->moveToThread(thread);
}

void ThreadForm::on_pushButton_clicked()
{
qDebug()<<""click thread:""<connect(thread SIGNAL(sendMsg(QString)) ui->textBrowser SLOT(insertPlainText(const QString & )));
thread->start();
}
显示没有问题,但是会阻塞界面,请教各位高手如何解决这个问题。

时间: 2025-01-21 12:08:41

请教,QT中如何避免界面被阻塞。的相关文章

c++-QT调用软键盘,要输入的编辑框在对话框Dialog中(UI界面),怎样才能使得软键盘输入到编辑框中

问题描述 QT调用软键盘,要输入的编辑框在对话框Dialog中(UI界面),怎样才能使得软键盘输入到编辑框中 10C 我参考QT中自带的一个软键盘的例子,问题是在输入编辑框的过程中需要使用到FocusWidget()函数,但是这个函数又是属于QWidget类的,而我用的编辑框是在Dialog下的,我想问的是有没有什么办法可以使得FocusWidget()在QDialog类下使用(我想实现的是FocusDialog()函数,可惜QDialog类中没有这个函数啊)C++学的不好,对类的理解不够,希望

界面-QT中如何实现多窗口切换

问题描述 QT中如何实现多窗口切换 要求在QT中实现一个登录界面内有多个不同的button,通过button调用显示各相应的子窗口,在子窗口中布有lineedit和button部件. 解决方案 这个很简单,QWidgetStack就能实现 解决方案二: 第一步:连接按钮的信号和槽 connect(ui->pushButton_login, SIGNAL(clicked()), this, SLOT(CheckIdentity())); 第二步:假设你要进入MainGuide这个子界面,创建该类,

ui界面-一个QT中特殊输入控件的实现问题

问题描述 一个QT中特殊输入控件的实现问题 我需要制作出一个QT输入控件,用户能在其中正常输入 数字字符,但需要实现的效果为: 每输入4个字符后自动空一格,即每自个字符为一组 每输入10组字符后自动换下一行 每输入达到5行后自动空一段,继续输入另起一段,效果见截图: 打算用QTextEdit来实现,请教比较合适的实现方法,不限制最终用什么输入控件, 谢谢! 解决方案 用QTextEdit实现了一下,应该能满足LZ的要求 main.cpp: #include "mainwindow.h"

界面-如何向qt中添加应用程序?

问题描述 如何向qt中添加应用程序? 事情是这样的,最近开始接触qt,想要给自己以前写的DOS风格的程序加一个界面,但是找不到把源程序添加到qt工程的方法,故,求教有没有什么好的方法 解决方案 需要自己重新写,使用qt的框架做好界面,然后把dos里的代码逻辑重新写进去,并且结合qt的界面显示出来,没有办法直接添加 解决方案二: QT应用程序添加图标添加qt应用程序图标为QT应用程序添加图标

在Qt中保持GUI响应[上]

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 Keeping the GUI Responsive 原文作者: Witold Wysota 译者: Jason Lee @ http://blog.csdn.net/jasonblog   在 QtCentre 里的人们经常提到一个反复出现的问题:长操作期间 GUI 界面无响应.这个问题不难解决,并且有多种应对方案,因此我在这里列出一些针对不同情况的可能的解决方案.

Linux系统下QT中的多线程编程

Qt 作为一种基于 C++ 的跨平台 GUI 系统,能够提供给用户构造图形用户界面的强大功能.为了满足 用户构造复杂图形界面系统的需求,Qt 提供了丰富的多线程编程支持. Qt 作为一种基于 C++ 的跨平台 GUI 系统,能够提供给用户构造图形用户界面的强大功能.为了满足 用户构造复杂图形界面系统的需求,Qt 提供了丰富的多线程编程支持.从 2.2 版本开始,Qt 主要从下 面三个方面对多线程编程提供支持:一.构造了一些基本的与平台无关的线程类:二.提交用户自定义事 件的 Thread-saf

人脸识别-linux下qt中opencv打开摄像头HIGHGUI ERROR:OpenCV Error:

问题描述 linux下qt中opencv打开摄像头HIGHGUI ERROR:OpenCV Error: 我在Ubuntu下用qt结合opencv做一个人眼状态识别的程序,qt做界面,程序在vs控制台环境下已经可以运行,但是qt下出错.错误信息 如下: HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /home/mkc/op

visual studio 2010-VS2010opencv写qt5界面显示视频,必须cvShowImage先显示,否则QT中视频不显示

问题描述 VS2010opencv写qt5界面显示视频,必须cvShowImage先显示,否则QT中视频不显示 运行时界面如下: 代码如下: void QT5video::showvideo() { ui.startBtn->setEnabled(false); ui.closeBtn->setEnabled(true); //声明IplImage指针 IplImage* pFrame = NULL; IplImage * return_frame; //获取摄像头 CvCapture* pC

对象-在Qt中使用QStackedWidget为每个界面设置背景问题

问题描述 在Qt中使用QStackedWidget为每个界面设置背景问题 我将每个界面的大小的QStackedWidget的对象都设置成一样的大小,可还是出现有缝隙,图片不能完全覆盖界面,求大神指教 解决方案 调用下外面layout如下代码: layout->setContentsMargins(0,0,0,0); layout->setMargin(0); layout->setSpacing(0);