请教一个关于update界面的问题
晚上闲得没事写点小程序,用designer拖了一个QWidget,morph into成了QFrame,promote了一个新的类,重写paintEvent,完成了绘制图片,图片的名称从widget.cpp的paintEvent函数中传进去。定时200ms update一次,改绘制一个新图片。问题是显示没问题,但图片不变。。。。也不是不变,最小化最大化一下就变了,怎么感觉这个update根本没用啊。。。。难道是win7的机制?以前在linux下写过类似的没啥问题
伪代码:
promotedQFrame:
void promotedQFrame::paintEvent(QPaintEvent *){ QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing,true); showPic();}void promotedQFrame::showPic(void){ QPixmap pixmap(this->picName); QPalette palette; palette.setBrush(this->backgroundRole(),QBrush(pixmap)); this->setPalette(palette); this->setAutoFillBackground(true); this->show();}
Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ... refreshTimer = new QTimer(this); refreshTimer->start(200); connect(refreshTimer,SIGNAL(timeout()),this,SLOT(refresh())); ...}void Widget::paintEvent(QPaintEvent *){ if(count < 10) { ui->frameM1->setPicName("images/Null.png"); count++; } else if(count >= 10 && count < 20) { ui->frameM1->setPicName("images/Yeah.png"); count++; } else { count = 0; }}void Widget::refresh(){ update();}