void Ticker::paintEvent(QPaintEvent * /* event */)
{
QPainter painter(this);
int textWidth = fontMetrics().width(text());
if (textWidth < 1) 为什么这一句会跟1进行比较??
return;
int x = -offset; 以下几行代码的逻辑还是没看懂,将-offset的值赋给x,而while循环事件的又是在实现什么??
while (x < width())
{
painter.drawText(x, 0, textWidth, height(),
Qt::AlignLeft | Qt::AlignVCenter, text());
x += textWidth;
}
}
void Ticker::showEvent(QShowEvent * /* event */)
{
myTimerId = startTimer(30);
}
void Ticker::timerEvent(QTimerEvent *event)
{
if (event->timerId() == myTimerId) {
++offset;
if (offset >= fontMetrics().width(text()))
offset = 0;
scroll(-1, 0);
} else {
QWidget::timerEvent(event);
}
} //这个时间事件函数完全看不出与主程序的关系!求解释?这个窗口自动移动是怎么实现的??
void Ticker::hideEvent(QHideEvent * /* event */)
{
killTimer(myTimerId);
myTimerId = 0;
}