• 4964阅读
  • 7回复

QT画图窗口和图片显示不同步问题,求助啊!!! [复制链接]

上一主题 下一主题
离线wasdaaaa
 

只看楼主 正序阅读 楼主  发表于: 2012-04-01
main.cpp:
...
Wdiget widget;
widget.show()
MainWindow window;
window.show();
sleep(2);
...
a.exec()
其中MainWindow中的 paintEvent :
QPainter painter(this);
painter.drawPixmap(0,0,800,600, pixmap);//pixmap 是一张800*600的图片
...
结果在运行后,出现window先出来,然后过了2秒才出现图片,后来在window.show()后添加了window.repaint() 想立即画图,但是还是
没有成功,请问QT的画图到底为什么那么麻烦,本来不是说show()只是在缓冲中画,最后在exec()循环中处理吗?但是为什么第一个SHOW直接在这个断点处就刷出来了,又没有到QT循环 我实在不知道为什么了,求教,QT初学者
离线wasdaaaa

只看该作者 7楼 发表于: 2012-04-05
不会吧?我又试了一次
  QApplication a(argc, argv);
    MainWindow w;
    w.show();
    MainWindow s;
    s.show ();
    sleep(2);

    return a.exec();

W就先出来了 过了2秒才出S,QT4.7.0
离线dxfans

只看该作者 6楼 发表于: 2012-04-05
Re:回 3楼(dxfans) 的帖子
引用第5楼wasdaaaa于2012-04-04 15:48发表的 回 3楼(dxfans) 的帖子 :
是的,之前的就已经出来了···

我在本地新建了一个和你类似的工程,但运行结果和你描述的不一样;widget和window的绘制都是在sleep之后才绘制出来的。。
离线wasdaaaa

只看该作者 5楼 发表于: 2012-04-04
回 3楼(dxfans) 的帖子
是的,之前的就已经出来了···
离线wasdaaaa

只看该作者 4楼 发表于: 2012-04-04
我的意思是:其实这个SLEEP只是一个模仿延迟的操作,因为我在MINDOW的构造函数中做了很多数据的初始化,或者SHOW后面做了一些耗时的数据操作,结果出现了,运行后,窗口先 弹出来了,但是PIXMAP的图像过了一会才出来,导致出现一种延迟感(本来 窗口和图像 是一起出来的··)
离线dxfans

只看该作者 3楼 发表于: 2012-04-04
您的意思是:在sleep之前,Wdiget里的paintEvent绘制出来了,而MainWindowt里的paintEvent没有绘制出来?
离线dbzhang800

只看该作者 2楼 发表于: 2012-04-04
建议:“永远”不要在主线程中调用sleep

http://blog.csdn.net/dbzhang800/article/details/6300425
离线wasdaaaa

只看该作者 1楼 发表于: 2012-04-03
  
快速回复
限100 字节
 
上一个 下一个