• 7525阅读
  • 12回复

界面死掉(求救) [复制链接]

上一主题 下一主题
离线帅坤
 
只看楼主 倒序阅读 楼主  发表于: 2010-04-26
我最近刚接触QT,参考着编了一个串口的接收程序,程序中是只要一按下“打开串口”按钮就一直循环读取缓存中接收到的数据并显示到界面上。但是现在的问题是:只要一按下“打开串口”按钮,整个界面就都死掉了,其它的按钮都不能操作,连右上角的“X”都不能使窗口关闭;但是程序确实还在运行,还在读数据。
这个问题不知道怎么解决,请高手帮忙!
离线抠涕
只看该作者 1楼 发表于: 2010-04-26
开线程来处理读取数据
离线帅坤
只看该作者 2楼 发表于: 2010-04-26
谢谢!
哭……线程!我还不知道是什么东西呢!
开学!
离线benbenmajia

只看该作者 3楼 发表于: 2010-04-27
应该是读取缓存时候的循环出问题了
安然.....
离线帅坤
只看该作者 4楼 发表于: 2010-04-27
嗯嗯,就是循环问题。但是我怎么也想不出来应该如何修改这个循环。正头疼呢!
离线帅坤
只看该作者 5楼 发表于: 2010-04-27
今天弄了一上午的线程,没弄出来,编译的时候出现这个错误forward declaration of `class SThread`。SThread是我自己继承QThread的一个类。在使用的时候就报着个错误,这个继承的类里面我声明了它的虚构函数,原本以为是这个虚构函数没用对,但是我都删掉后,还是出现同样的错误。
可能是因为SThread.h文件中有语法问题,parse error before `{` token和parse error before protected,我仔细查过了,没找到孙语法错误啊,不知道怎么改。
有谁遇到过类似的问题吗?帮忙解决一下。
离线帅坤
只看该作者 6楼 发表于: 2010-04-27
sthread.h文件
#ifndef STHREAD_H
#define STHREAD_H

#include <qthread.h>

class DataForm;
class SThread : public QThread
{
    public:
                SThread();
                void stop();
                int ttyraw(int fd, int baud);
                int ttyreset(int fd);
                int OSOpenPort(const char *name, int baud);
                void comRecv();
   protected:
                virtual void run();
   private:
                volatile bool stopped;
};
#endif  //STHREAD_H


编译错误:
sthread.h : 8 : parse error before '{' token
sthread.h : 18 : parse error befor 'protected'


请大家帮帮忙……
离线帅坤
只看该作者 7楼 发表于: 2010-04-27
是不是使用QThread的时候需要有什么特殊要求啊?
我的QT编译安装的时候加了-thread选项啊,可是还是会出问题。现在真的不知道是什么原因了。
有谁知道怎么查看当前qt的配置,用什么的命令吗?我现在不确定现在安装的这个QT到底支不支持多线程了。
离线抠涕
只看该作者 8楼 发表于: 2010-04-27
我复制你的代码下来编没问题阿。。。
离线午小夜

只看该作者 9楼 发表于: 2010-04-27
用多线程,或者试试qApp->processEvents();
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线rqzrqh

只看该作者 10楼 发表于: 2010-04-28
部件和串口程序在同一个进程里,当然要等串口循环程序执行完后才能执行同一进程的其他任务。
离线帅坤
只看该作者 11楼 发表于: 2010-05-03
太谢谢大家了,我去试着改一改!五一过完了,明天要上班了!
离线beajisong

只看该作者 12楼 发表于: 2010-05-06
这种简单事务可以不开线程,多用计时器冲入槽就行
快速回复
限100 字节
 
上一个 下一个