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;
}