当前位置:编程学习 > wap >>

显示图片问题

用update()触发paintevent事件显示图片,但第一幅不显示,直接第二幅开始显示。这个问题怎么解决? --------------------编程问答-------------------- 貼出代码 --------------------编程问答-------------------- 第二幅 已近把第一幅 冲了把! --------------------编程问答-------------------- 应该是第二幅把第一幅给覆盖掉了,你如果想做两个图的过渡,在绘制中加入计时判断,过一定事件后在执行绘制第二副图的过程 --------------------编程问答--------------------
引用 1 楼 yiyaaixuexi 的回复:
貼出代码

void ImageQlabel::setimage(QImage *image)
{
    i=1;
    this->image=image;
   update();
}
void ImageQlabel::paintEvent(QPaintEvent *)
{

     if(i!=0)
     {
    QPainter* painter1=new QPainter(this);
   QRect target(0,0,320,240);
   QRect source(0,0,640,480);
   painter1->drawImage(target,*image,source);
     qDebug()<<"begin painter";
    delete painter1;
       }
    }
我发现第一幅图片根本就没有绘制,但是已经明明调用update()函数了啊  如果用repaint()函数的话  是可以绘制第一幅图片 但运行久了会出现“xcb_io.c:228:_XSend: 断言“!dpy->xcb->request_extra失败”这样的错误 --------------------编程问答--------------------
引用 2 楼 ak47zhangzhiwei 的回复:
第二幅 已近把第一幅 冲了把!

代码见四楼 --------------------编程问答--------------------
引用 3 楼 cnsword 的回复:
应该是第二幅把第一幅给覆盖掉了,你如果想做两个图的过渡,在绘制中加入计时判断,过一定事件后在执行绘制第二副图的过程

代码见四楼 --------------------编程问答-------------------- 楼主提供的代码不是最关键的部分,关键是setimage函数是在哪里被调用的。 --------------------编程问答--------------------
引用 7 楼 xiachm 的回复:
楼主提供的代码不是最关键的部分,关键是setimage函数是在哪里被调用的。

在一个while循环里,获得一张图片,然后用setimage函数调用,每次循环都这样 --------------------编程问答-------------------- 那么两次调用setimage的间隔是多长时间?瞬间吗? --------------------编程问答--------------------
引用 9 楼 xiachm 的回复:
那么两次调用setimage的间隔是多长时间?瞬间吗?

0.5秒 
貌似很时间没关系的
--------------------编程问答-------------------- 那不到一秒的时间你的第一张图就被第二张图替换掉了,你能看见吗?
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,