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对象的前面了。(转者注:貌似我也遇到这种情况)