`
wangminshe89
  • 浏览: 667598 次
文章分类
社区版块
存档分类
最新评论

详解:qwidget: must construct a qapplication before a qpaintdevice VS报错

 
阅读更多

问题:

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

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

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

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

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

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

分享到:
评论

相关推荐

    TTKWidgetTools:QWidget自定义控件集合持续更新中.....

    TTKWidgetTools:QWidget自定义控件集合持续更新中.....

    Qt实现绘图工具

    用Qt实现绘图工具,可以绘画矩形、椭圆、箭头、线条、文字,还带有颜色选取器,可供颜色变换。

    xy.exe(QWidget功能作用展示控件)

    内容:QWidget功能作用的展示控件,展示了QWidget功能作用中大小位置的一些API,通过测试,能让自己更快地熟悉其功能作用。 问题:有问题多交流

    qt pianter

    Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); bmp=new QPixmap("../painter/image/Winter.jpg"); } void Widget::paintEvent(QPaintEvent *) { QPixmap ...

    Qt猜数字游戏

    Guessnum::Guessnum(QWidget *parent) : QWidget(parent), ui(new Ui::Guessnum) { ui->setupUi(this); this->t=15; this->total=0; this->randNum=0; this->showNum=0; this->flag=0; this->time_flag=0; ...

    Qt-Embedded编程实战

    #include <qapplication.h> #include <qwidget.h> #include #include class DrawDemo:public QWidget { public: DrawDemo( QWidget *parent=0, const char *name=0 ); void paintEvent( QPaintEvent *); ...

    qt电子相册

    Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); QImage image; image.load("3.jpg"); QPalette palette;//调色板 palette.setBrush(this->backgroundRole(),...

    cpu 控件源代码(可直接运行)

    custom_cpu_widget::custom_cpu_widget(QWidget *parent) : QWidget(parent) { this->w_width = 80; this->w_height = 100; resize(QSize(this->w_width, this->w_height)); setFixedSize(this->w_width, this...

    PySide的奥秘:揭秘GUI应用程序的神秘面纱.zip

    技术关键词:Python, PySide, GUI, QApplication, QWidget, 布局管理器, 信号与槽, 事件处理, 打包与分发 内容关键词:窗口创建, 控件添加, 信号与槽连接, 窗口布局, 窗口属性设置, 事件处理机制, 应用程序...

    learn-qt-multiUI.zip

    1、首先,先创建一个新文件,并在里面添加新的Qt设计界面 可以得到如图,mainwindow是主界面,widget是我新添加的子界面 ... QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }

    QT样式表简介

    Qt样式表的思想很大程度上是来自于HTML的层叠式样式表(CSS), 通过调用QWidget::setStyleSheet()或QApplication::setStyleSheet(), 你可以为一个独立的子部件、整个窗口,甚至是整个个应用程序指定一个样式表。...

    简易日历_设计文档1

    修改背景颜色。对事件按开始时间排序。删除全部事件。信号:槽:基类:QWidget功能:常用的通用接口,本软件中仅有复制文件。函数:信号:槽:复制文件,并带进度条

    使用QWidget实现翻转

    自实现的一个翻转QWidget的demo;采用QPainter和QPropertyAnimation实现,是一个学习动画设计的高效demo

    qwidget嵌入qml最完整代码

    qwidge窗口嵌入qml窗口, qml调用qwidget方法 qwidget发送信号传递数据 qml信号处理以及注意事项

    QT之QTableWidget基本使用

    Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); //tableWidget表格控件使用 //设置列数 ui->tableWidget->setColumnCount(3); //设置水平表头 ui->...

    Python下拉选框

    from PyQt5.QtWidgets import QWidget, QLabel, QComboBox, QApplication import sys class Example(QWidget): def __init__(self): super().__init__() self.settings() def settings(self): self.a = QLabel...

    MyQWidgetExamples:基于QWidget的示例

    MyQWidgetExamples基于QWidget的示例

    QWidget,QMainWindow和QDialog的区别

    QWidget,QMainWindow和QDialog的区别.

    2个QWidget相互切换显示.zip

    QT 2个QWidget UI 来回切换例子,并且ui界面可自行单独处理单独cpp和h文件,相互不影响。

    qwidget与qml交互

    QWidget嵌入qml,实现QWidget与qml的交互、无标题栏、可拉伸、可拖动、可切换qml页面

Global site tag (gtag.js) - Google Analytics