• 5177阅读
  • 0回复

[讨论]请教,如何循环显示图片,实现动态提示功能 [复制链接]

上一主题 下一主题
离线modelsim
 

只看楼主 倒序阅读 楼主  发表于: 2012-01-04
请教,如何循环显示图片,实现动态提示功能
void camera_func::keyPressEvent(QKeyEvent * e)
{
switch (e->key())
{
case Qt::Key_Enter:
  resultingpic1 = new QPixmap("/opt/Qtopia/pics/resultingpic_1.png");
  resultingpic2 = new QPixmap("/opt/Qtopia/pics/resultingpic_2.png");
  resultingpic3 = new QPixmap("/opt/Qtopia/pics/resultingpic_3.png");

  resulting = new QLabel(this, "resulting");
  CHECK_PTR(resulting);
  resulting->setGeometry(QRect(0, 0, 320, 240));
  resulting->setPixmap(*resultingpic1);
  resulting->show();
  this->show();
  this->showFullScreen();
  update();
  qApp->processEvents();
  //我想实现:当程序执行testforloop时循环显示上面三张带有进度指示的图,请问我该怎么做?
  //目前我这种做法只能显示一幅图,无法给人一种动态的感觉
  testforloop();//此函数比较耗时,我用打印输出一千次来模拟这个时间
  update();
  break;
case Qt::Key_Left:
  break;
case Qt::Key_Up:
  break;
case Qt::Key_Down:
  break;
default:
  QDialog::keyPressEvent(e);
  break;
}
}
void camera_func::testforloop()
{
for(int i=0;i<1000;i++)
  printf("testforloop\n");
}

Qt软件环境是Qtopia 2.2.0
我想实现:当Key_Enter按键按下,在调用testforloop时循环显示resultingpic1.png、resultingpic2.png、resultingpic3.png这3张图,请问我该怎么实现?
我自己想了2个方法:下面红色代码替代上面按键处理函数中的红色代码
1、将此三张图做出一个gif文件,通过显示gif图片来实现动态的效果,此方法如果能成功应该是最简单的,程序如下
QMovie movie("/opt/Qtopia/pics/resultingpic.gif");
movie.setBackgroundColor(black);
movie.unpause();
resulting->setMovie(movie);
resulting->show();
this->show();
this->showFullScreen();
update();
qApp->processEvents();
此方法无法显示gif,具体原因未知,如果有哪位在Qtopia上实现过显示gif文件,恳请指点迷津。
2、通过定时器来实现,当Key_Enter按键按下,启动定时器,程序如下
changepngtimer = startTimer(50);
update();
qApp->processEvents();

//以下是定时触发调用函数,通过打印changepngtimer来模拟图片显示程序,用来测试程序执行的先后关系
void camera_func::timerEvent(QTimerEvent * event)
{
if (event->timerId() == changepngtimer)
  printf("changepngtimer!\n");
}
发现此方法也不可行,打印结果如下
testforloop
testforloop
testforloop
testforloop
testforloop
testforloop
testforloop
testforloop
testforloop
testforloop
testforloop
testforloop
testforloop
testforloop
打印完1000个testforloop之后才每隔50ms打印出一个changepngtimer!
changepngtimer!
changepngtimer!
changepngtimer!
快速回复
限100 字节
 
上一个 下一个