主题 : qtopia 中多个text的顺序延时显示问题,求助。 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 27835
精华: 0
发帖: 117
金钱: 590 两
威望: 118 点
综合积分: 234 分
注册时间: 2010-09-01
最后登录: 2017-06-22
楼主  发表于: 2011-01-08 20:06

 qtopia 中多个text的顺序延时显示问题,求助。

    用designer做了一个界面,有3个text的显示,现在问题:
  如果显示111,222,333的话,不管加不加延时,都是同时显示的,而当加了延时时,延时是起了作用,但是是在显示的开始。
  例如用
             xxxx1 -> setText("111");
             sleep(2);
             xxxx2-> setText("222");
             sleep(2);
              xxxx3 -> setText("222");
             sleep(2);
          的时候,延时的6秒全都在xxxx1 显示前等待了,然后xxxx1 ,xxxx2 ,xxxx3一起显示出来。
     而我希望的是xxxx1 显示,延时2秒,xxxx2 显示,延时2秒,xxxx3显示,延时2秒
   一直不明白哪里出了问题,然后问题怎么解决,难道是qtopia本身的显示问题,必须一起显示?

    求解,在线等。
[ 此帖被langqiong在2011-01-08 20:19重新编辑 ]
级别: 侠客
UID: 27835
精华: 0
发帖: 117
金钱: 590 两
威望: 118 点
综合积分: 234 分
注册时间: 2010-09-01
最后登录: 2017-06-22
1楼  发表于: 2011-01-09 22:28
估计是qtopia本身的原因。
大家帮帮忙啊,万一不行,只有想其他办法了,唉!
级别: 荣誉会员
UID: 34761
精华: 0
发帖: 1348
金钱: 6835 两
威望: 1367 点
综合积分: 2696 分
注册时间: 2010-12-21
最后登录: 2017-06-02
2楼  发表于: 2011-01-10 18:05
慎用 sleep, 改用timer来实现

#include <qtimer.h>


{
     xxxx1 -> setText("111");  
    QTimer::singleShot(this, 2000, SLOT(func2()));
}

void ClassName::func2()
{
    xxxx2-> setText("222");
    QTimer::singleShot(this, 2000, SLOT(func3()));
}

void ClassName::func3()
{
    xxxx3 -> setText("222");
}
级别: 侠客
UID: 27835
精华: 0
发帖: 117
金钱: 590 两
威望: 118 点
综合积分: 234 分
注册时间: 2010-09-01
最后登录: 2017-06-22
3楼  发表于: 2011-01-10 22:18
还没有试用hacker的方法,但是非常感谢。

仔细查找了一些资料,看了看,大致这样说的,因为在做qtopia显示的时候,可能是专门的一个线程管理,动态定时的刷新屏幕,这就导致在做显示更新的时候,实际的sleep函数作用不正常。反复试了很多次,无论是先显示什么,如果程序中最后有更改显示内容的地方,那么屏幕上看到的只有最后要现实的内容,无论中间sleep多久。
后来看了eddy的三色例子,他用到一个update的函数,找了一下没找到函数说明与原型,不知道是不是实时更新显示内容的函数。

QTimer是qtopia定义的定时器类,提供定时器信号和单触发定时器,hacker的程序设计的妙处在于当第一次显示2秒结束后触发信号给第二次的槽,这个方法自己没想到,确实比较好,非常感谢。
自己之前也考虑使用QTimer,但是只是简单的定时触发,只能控制一个或者一次,而没有想到可以有条件触发来作为延时,程序的突破这是自己需要学习的地方,谢谢hacker。
级别: 荣誉会员
UID: 34761
精华: 0
发帖: 1348
金钱: 6835 两
威望: 1367 点
综合积分: 2696 分
注册时间: 2010-12-21
最后登录: 2017-06-02
4楼  发表于: 2011-01-11 21:17
sleep会使整个GUI线程阻塞(造成界面僵死),所以一般GUI线程中不应该使用sleep,
sleep一般常用于后台线程、或者工作线程
级别: 侠客
UID: 27835
精华: 0
发帖: 117
金钱: 590 两
威望: 118 点
综合积分: 234 分
注册时间: 2010-09-01
最后登录: 2017-06-22
5楼  发表于: 2011-01-12 11:21
原来如此,谢谢。
这段时间正在仔细阅读华清的《嵌入式Linux应用程序开发标准教程》 linux的线程和进程部分,
觉得这本书还可以,希望能多向你请教。
级别: 荣誉会员
UID: 34761
精华: 0
发帖: 1348
金钱: 6835 两
威望: 1367 点
综合积分: 2696 分
注册时间: 2010-12-21
最后登录: 2017-06-02
6楼  发表于: 2011-01-12 12:12
多来这里泡泡啊