绘图之后等待一段时间再同个区域重新绘图?
初学者请教@@
我希望在打开图片后对图片进行三种不同处理,然后先绘出第一幅图,等待5秒,再在同一个区域绘出第二幅图,等待5秒,再第三幅图,等待5秒,再重新第一幅,循环。。。
相关部分代码如下:
BMP b; //BMP是已定义的class
void Dialog::OpenPic(){
QString fileName = QFileDialog::getOpenFileName(this);
if(!fileName.isEmpty()){
setWindowTitle(fileName);
b.ReadBmp(fileName); //读入图片并进行三种处理
while(1){
image = b.ShowImage1(fileName); //取出第一幅图,image是Dialog类中private的对象
QWidget::update();
Sleep(5000);
image = b.ShowImage2(fileName); //取出第二幅图
QWidget::update();
Sleep(5000);
image = b.ShowImage3(fileName); //取出第三幅图
QWidget::update();
Sleep(5000);
}
}
}
void Dialog::paintEvent(QPaintEvent *){
QPainter painter(this);
painter.drawImage(20, 20, image, 0, 0);
}
我把while循环注释掉之后运行,只会在等待一段时间后直接显示第三幅图,any idea?
[解决办法]
你该使用定时器去触发
[解决办法]
用定时器, 或者开线程。
在单线程的话 还要调用 QCoreApplication::processEvents()
[解决办法]
QWidget::update();
会调用基类的update……
把while循环改成timer,每5秒换一次image, 然后 update()即可。
[解决办法]
你while死循环在哪里当然处理不了其他点击事件了。
所以建议你用QTimer, click的时候stop之。
[解决办法]
我写的类似的例子:http://www.qtcn.org/bbs/read-htm-tid-47228-displayMode-1-page-1.html#120556