• 8583阅读
  • 2回复

QLabel上显示滚动文本 [复制链接]

上一主题 下一主题
离线whs3727
 
只看楼主 倒序阅读 楼主  发表于: 2009-05-21
如何在QLabel上现实滚动文本,《C++ GUI with Qt4》上有的例子用的定时器,我在QLabel上弄了半天也不行,
我的代码如下,望高手帮忙解决一下。
主程序是一个QDialog

QTimer *timer=new QTimer(msglabel);
connect(timer,SIGNAL(timeout()),this,SLOT(timeoutslot()));//timeoutslot()为自定义槽
timer->start(1000);

void timeoutslot()
{

            ++offset;
            if (offset >= msglabel->fontMetrics().width(text()))
                offset = 0;
            msglabel->scroll(-1, 0);
            msglabel->update();
            msglabel->updateGeometry();

}
void paintEvent(QPaintEvent *)
    {
        QPainter painter(msglabel);
        int textWidth =fontMetrics().width(text());
        if (textWidth < 1)
            return;
        int x = -offset;
        while (x < msglabel->width()) {
               painter.drawText(x,  0, textWidth, msglabel->height(),
                                Qt::AlignLeft | Qt::AlignVCenter, text());
               x += textWidth;
       }
    }
离线duduqq

只看该作者 1楼 发表于: 2009-05-22
你的paintEvent是你的父窗体的吧,不是QLabel的,你是想在QLabel上画字,不是在父窗体上画。
先整理好思路,想清楚了再写程序。
离线whs3727
只看该作者 2楼 发表于: 2009-05-23
请楼上说情恶具体怎么改?谢谢!
快速回复
限100 字节
 
上一个 下一个