天嵌 ARM开发社区

 找回密码
 注册
查看: 4047|回复: 5

QT怎么线程并发执行,现在线程运行很卡

[复制链接]
765679550 发表于 2012-6-11 17:18:26 | 显示全部楼层 |阅读模式
本帖最后由 765679550 于 2012-6-12 11:03 编辑

,现在运行两个简单的线程 一个GUI和一个数据发送线程。。
两个线程都能跑起来了,但是在执行GUI线程的时候有很卡的感觉,而且数据发送进程里面要是没有sleep(1);的话,GUI线程就直接不能运行起来了。。这是什么原因?线程需要设置什么东西吗?

mythread.h  
#ifndef MYTHREAD_H  
#define MYTHREAD_H  
#include <QThread>
class MyThread : public QThread  
{  
  Q_OBJECT  
public:  
     MyThread();  
    ~MyThread();  
protected:  
      void run();  
signals:  
     void changeText(QString str);  
};  
#endif // MYTHREAD_H  


widgett.h  
#ifndef WIDGETT_H  
#define WIDGETT_H  
#include <QtGui/QMainWindow>
#include "ui_widgett.h"  
class WidgetT : public QMainWindow  
{  
Q_OBJECT  
public:  
    WidgetT(QWidget *parent = 0, Qt::WFlags flags = 0);  
     ~WidgetT();  
private:  
    Ui::WidgetTClass ui;  
private slots:  
    void labelSetText(QString qstr);  
};  
#endif // WIDGETT_H  

mythread.cpp  
#include "mythread.h"  
MyThread::MyThread()  
: QThread()  
{  
}  
MyThread::~MyThread()  
{  
}  
void MyThread::run()
{  
static int i=0;  
    while(true)  
   {  
     ++i;  
     QString strnum = QString::number(i);  
    emit changeText(strnum);  //发射数据
     QThread::sleep(1);  
   }  exec();
}  

widgett.cpp  
#include "widgett.h"  
#include "mythread.h"  
Q_DECLARE_METATYPE(QString);  
WidgetT::WidgetT(QWidget *parent, Qt::WFlags flags)  
: QMainWindow(parent, flags)  
{  
    ui.setupUi(this);  
     MyThread *mythread = new MyThread;  
     int id=qRegisterMetaType<QString>("");  
     connect(mythread,SIGNAL(changeText(QString)),this,SLOT(labelSetText(QString)),Qt::QueuedConnection);  
     mythread->start();  
}  
WidgetT::~WidgetT()  
{  
}  
void WidgetT::labelSetText(QString qstr)
{  
     ui.label->setText(qstr);  //
  /*
  这里还有很多处理的程序,
   */

}

void WidgetT::on_button_clicked(QString qstr)
{  
     ui.label->setText("A");  //
    /*
   还有一个数据的简单处理部分
   */
}


huwenming 发表于 2012-6-11 19:27:51 | 显示全部楼层
我也遇到这个问题了,,你解决了没有
回复

使用道具 举报

海之梦fly 发表于 2012-6-11 21:00:45 | 显示全部楼层
把代码贴上来分析
回复

使用道具 举报

 楼主| 765679550 发表于 2012-6-12 10:35:57 | 显示全部楼层
huwenming 发表于 2012-6-11 19:27
我也遇到这个问题了,,你解决了没有

没有解决,还在纠结中~!有进展互相说一下
回复

使用道具 举报

 楼主| 765679550 发表于 2012-6-12 10:36:28 | 显示全部楼层
海之梦fly 发表于 2012-6-11 21:00
把代码贴上来分析

精简了一下。。大致就是这个样子。。放在一楼
回复

使用道具 举报

TQ-lkp 发表于 2012-6-12 11:57:50 | 显示全部楼层
信号发送过快,导致ui界面一直在响应信号,导致界面卡
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-6-20 21:05 , Processed in 2.040976 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表