• 3640阅读
  • 0回复

[提问]对事件处理这章程序的困惑(附代码如下) [复制链接]

上一主题 下一主题
离线zacharychau
 

只看楼主 倒序阅读 楼主  发表于: 2012-09-08
对事件处理这章程序的困惑(附代码如下)
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;
}
快速回复
限100 字节
 
上一个 下一个