pamxy

为了那么丁点的兴趣,你懂的...

导航

QWidget: Must construct a QApplication before a QPaintDevice

转自:http://blog.csdn.net/yuzhiyuxia/article/details/7760917

一个QT程序,在Windows下编译运行正常;现在在Linux下编译成功之后运行的时候,程序却异常退出,命令行提示:QWidget: Must construct a QApplication before a QPaintDevice。

字面意思是必须在一个QPaintDevice对象(这里是QWidget,QWidget是QPaintDevice的子类)之前,先创建好QApplication对象。

不可能啊。。。在windows下运行是正常的啊!

g了好久,找到一篇文章:http://blog.chinaunix.net/u1/56545/showart.php?id=495687
(转者注:这个链接已经用不了)
虽然说是qwt的库的问题,但是,也可能是因为release和debug的问题导致的。 因为我在linux下是用的make all命令编译出的debug和release版本,二者生成的库文件的目录是相同的,很有可能产生相同的库文件而导致的冲突。(不像qt的dll那样release的没有d,debug的有d)

基于此,修改pro文件,将debug和release生成的库文件放在各自的目录下,运行,ok。

当然还有一种可能是QApplication没有初始化,即将QWidget放在QApplication对象的前面了。(转者注:貌似我也遇到这种情况)

posted on 2013-03-15 11:26  pamxy  阅读(392)  评论(0编辑  收藏  举报