• 4741阅读
  • 2回复

请教界面实现文本滚动之后,GUI响应迟缓的问题 [复制链接]

上一主题 下一主题
离线cherrydou
 
只看楼主 正序阅读 楼主  发表于: 2008-05-22
— 本帖被 XChinux 执行加亮操作(2008-05-22) —
我在一个界面上放置了一个QWidget区域,重写了paintEvent()和timerEvent()涵数,使QWidget上显示的文本能上下滚动,但是实现文本滚动之后,整个GUI界面的响应速度变得无比迟缓.请教高手如何解决这个问题?

关键代码如下:

void KfrmText::paintEvent(QPaintEvent *event)
{
      QPainter painter(this);
      int x=offset;
      painter.drawText(0,x,size.width(),size.height(),Qt::AlignHCenter | Qt::AlignVCenter,text);
      update();  // *
}

void KfrmText::timerEvent(QTimerEvent *event)
{
      if(event->timerId()==myTimerId)
        {
              --offset;
              if(offset<=1(size.height()/2))
                  {
                      offset=size.height();
                      scroll(0,-1);
                  }
                else
                {
                        QWidget::timerEvent(event);
                }

        }

}


*号处的update()加上了整个界面就会变得无比的迟缓,但是去掉update()之后,滚动文本又会变得非常不流畅.


离线cherrydou
只看该作者 2楼 发表于: 2008-05-22
哦, 现在去掉了update() ,并在构造函数里 setAttribute( Qt::WA_NoBackground );

GUI界面也不迟缓了,但是出现了新的问题,就是文本移动的时候有尾迹, 如何解决??
离线chencongsytu

只看该作者 1楼 发表于: 2008-05-22
用了update就死循环了
快速回复
限100 字节
 
上一个 下一个