如何在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;
}
}