打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
详解:qwidget:?must?construct?a?qapplication?bef...

详解:qwidget: must construct a qapplication before a qpaintde

(2012-10-14 10:20:37)
标签:

杂谈

分类: QT日志

问题:

使用VS编译连接都没有错误,但是运行的时候出现提示:

qwidget: mustconstruct a qapplication before a qpaintdevice

然后就是没反应了。

原因1:必须有QApplication实例。

原因2:

一个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下是用的makeall命令编译出的debug和release版本,二者生成的库文件的目录是相同的,很有可能产生相同的库文件而导致的冲突。(不像qt的dll那样release的没有d,debug的有d)

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

在弄lele给代码时候 老是出现QWidget: Mustconstruct a QApplication before aQPaintDevice这样的错误,后来只是照例子放到我的main里面都还是那个错误,但是在例子原来的地方就没事,因为我的加了控制台,例子的没有加控制台 打印不出东西来,我就突然想起debug和release的事情来,果然 改例子的pro变成debug同样出现QWidget: Must construct a QApplication before aQPaintDevice这这样的提示,这下找到了问题的原因了。赶紧到qwt.pro一看果然只有release 我就加了一个debug,保存退出,make clean 接着make,得到了qwt的debug的库,不过名字没有变,不像qt的dll那样release的没有d,debug的有d。估计是程序是debug,qwt是release,qt是debug,他们之间有点过节吧 ,呵呵:)对了,要记得到qwt里面的designer把那个插件的pro也换过来哦,同样makeclean后再make。然后把编译好的新的插件dll放到qt的相应的插件目录。否则到qt的designer加qwt的控件还是会挂!!!

参考网页:http://hi.baidu.com/wolfand11/blog/item/772b738ff6c84ce5f11f36fa.html

http://whuisslq.blog.sohu.com/162497784.html

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Qt绘图画布类QPaintDevice使用指南
QT的"cannot find
qwt5 的编译和使用注意事项
QT3个主要的基类
实战PyQt5: 105
Porting to Qt 4 译文
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服