首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

绘图之后等待一段时间再同个区域重新绘图?解决方案

2012-04-01 
绘图之后等待一段时间再同个区域重新绘图?初学者请教@@我希望在打开图片后对图片进行三种不同处理,然后先

绘图之后等待一段时间再同个区域重新绘图?
初学者请教@@
我希望在打开图片后对图片进行三种不同处理,然后先绘出第一幅图,等待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

热点排行