• 6682阅读
  • 5回复

qt的for和 app.exec()协调 [复制链接]

上一主题 下一主题
离线tzj115115
 
只看楼主 倒序阅读 楼主  发表于: 2009-08-08
各位:
     小弟新学qt,写了个简单的图片交替显示的小程序,但是由于没有搞清楚 for循环和app.exec()的调用关系,因此结果为:(1)当屏蔽a.exec()时,能间隔闪屏,但是无论延时设置多大都依然是一闪而过然后等待延时过完;(2)不屏蔽a.exec(),此时仅仅显示一侦图就不交替更新了。   我想问题可能出在 for循环和a.exec()的关系上,望各位清楚的指点下如何解决啊?谢谢先,另完整代码如下:

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <qapplication.h>
#include <qimage.h>
#include <qlabel.h>
#include <qpixmap.h>
#include <qt.h>

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>


int main(int argc,char **argv)
   {
        QApplication app(argc, argv);
        QLabel imageLabel(0);
        QPixmap pixmap;
    char * str;
    int i;
    for(i=0;i<=10;i++)
    {
        if(i%2!=0)
            str="1.jpg";
        else
            str="7.jpg";
        if(!pixmap.load(str))
            imageLabel.setText("Could 1111 not load image");
        else
    {
        pixmap.resize(pixmap.width()/6,pixmap.height()/6);
            imageLabel.setPixmap(pixmap);
    }
        imageLabel.show();
        //usleep(5000000);
    }
   return app.exec();
//return 0;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
离线dbzhang800

只看该作者 1楼 发表于: 2009-08-08
说实话,你的整个思路有问题。

不应该在main函数中这么用for循环,更不能用 sleep 这类的函数。

你应该用 QTimer, 使用Qt 的信号和槽来做。

建议先看些Qt的资料
[ 此帖被dbzhang800在2009-08-08 20:11重新编辑 ]
离线XChinux

只看该作者 2楼 发表于: 2009-08-08
楼上正解。
app.exec()的目的是进入消息循环。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线tzj115115
只看该作者 3楼 发表于: 2009-08-08
谢谢dbzhang800 等的指点,因时间比较急,现在看QT现学QTimer等实现循环交替显示图片功能可能来不急了,在此望请 dbzhang800 等给出参考代码,让小弟参考学习下,我真是没有头绪啊,谢谢先!!
离线tzj115115
只看该作者 4楼 发表于: 2009-08-08
另外,草率的问句,那能否在main里使用for之类的循环呢?如果可以使用的话, 应如何使用啊,望能给个使用示例,在此不盛感激!!谢谢dbzhang800和斑竹 XChinux给出指导
离线tzj115
只看该作者 5楼 发表于: 2009-08-09
好像qt3.3里面的QPixmap没有fromImage方法阿,那如何把QImage转换为QPixmap哈?
快速回复
限100 字节
 
上一个 下一个