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

详解: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

分享到:
评论

相关推荐

    QWidget是Qt框架中的一个核心类.docx

    QWidget是Qt框架中的一个核心类,用于创建图形用户界面(GUI)应用程序的基本可视化元素。它是所有用户界面组件的基础,包括窗口、对话框、按钮、文本框等。以下是QWidget的详细介绍: 一、基本特性 绘图功能: ...

    Qt例程源代码QWidget.7z

    这个"Qt例程源代码QWidget.7z"压缩包显然是一个包含Qt编程示例的资源,特别是关于QWidget类的使用。QWidget是Qt GUI库中的基础组件,它是所有用户界面对象的基类,包括按钮、文本框、菜单等。 在Qt中,QWidget主要...

    Qt实现绘图工具

    这可以通过继承QWidget或使用QMainWindow并添加QGraphicsView到其布局来实现。接着,我们需要实例化一个QGraphicsScene,并将其与QGraphicsView关联起来,这样我们就可以在场景上进行绘图了。 在描述中提到,这个...

    QWidget样式表设置背景示例代码

    在这个方法中,使用`QPainter`进行背景的绘制,然后调用`QWidget::paintEvent(event)`以绘制其他内容。 3. **利用父容器**:将`QWidget`放入一个有背景的`QFrame`或`QLayout`中,然后对这些容器设置QSS,这样间接...

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

    **TTKWidgetTools** 是一个基于 **Qt** 框架的项目,专注于提供一系列自定义的 **QWidget** 控件。这个项目的核心目标是为开发者提供更多的选择和灵活性,以便在构建用户界面时能实现更丰富的功能和更美观的设计。Qt...

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

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

    给QWidget加滚动条

    在Qt编程环境中,`QWidget`是基础的用户界面元素,用于构建复杂的图形用户界面。有时候,当`QWidget`内部的内容过大无法一次性显示时,我们可能需要为其添加滚动条以实现内容的平滑滚动。本教程将详细介绍如何为`...

    QWidget嵌入到QML中

    在Qt框架下,`QWidget`和`QML`是两种不同的UI表示技术。`QWidget`是C++中的组件,主要用于构建传统的图形用户界面,而`QML`是一种声明式语言,用于创建现代、动态和触控友好的用户界面。将`QWidget`嵌入到`QML`中...

    qt多种重要的案例练习

    同时,这也是进一步学习QMainWindow、QDialog、QStackedWidget等高级组件,以及QApplication、QThread等系统层面概念的良好起点。通过不断练习,你将能够熟练地运用Qt进行高效、美观的跨平台应用程序开发。

    QWidget.7z

    `QWidget`是Qt库中的一个核心类,它是所有用户界面对象的基础。在Qt框架下,几乎所有的图形用户界面(GUI)元素,如按钮、文本框、菜单等,都是`QWidget`的子类。这个压缩包文件"QWidget.7z"很可能包含与`QWidget`...

    Python3.x+QFileDialog 实现界面功能“选择文件夹”、“选择文件”、“选择多个文件”和“保存文件”

    from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtWidgets import QFileDialog ``` **选择文件夹:** 要实现“选择文件夹”的功能,可以调用`QFileDialog.getExistingDirectory()`函数。这个函数会...

    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常用类整理.pdf

    2. QWidget: 所有UI元素的基类,包括窗口、按钮、文本框等。QWidget负责处理事件、绘制自身以及与其他窗口部件的布局关系。`QDesktopWidget`是与桌面环境交互的类,提供屏幕尺寸信息和在桌面绘制的能力。`QStyle`类...

    linux下即时通讯软件

    QWidget和QApplication是Qt框架中的一种类,用于实现图形用户界面。QWidget类提供了多种方法,例如show()、hide()、resize()等,用于设置窗口的显示和隐藏、大小和位置等属性。QApplication类提供了多种方法,例如...

    MyQWidgetExamples:基于QWidget的示例

    其中,`QWidget`是Qt库中的基础类,它是所有窗口小部件(Widget)的基类,用于创建各种用户界面元素。本项目"MyQWidgetExamples"显然是一个专门展示如何使用`QWidget`进行开发的示例集合。 `QWidget`类是构建用户...

    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 *); ...

    基于QT5的tanchishe小程序 贪吃蛇小游戏代码

    Snake::Snake(QWidget *parent) : QWidget(parent), ui(new Ui::Snake){ ui->setupUi(this); initSnakeLogic(); initSnakeUi(); sleep(5); } //得到食物点void Snake::upDateFood(){ qsrand(QTime(0,0,0).secsTo...

    qwidget嵌入qml最完整代码

    在Qt框架中,QML(Qt Meta Language)和QWidget是两种不同的UI表示方式。QML是一种基于JSON的声明式语言,用于构建具有丰富图形界面的应用程序,而QWidget是C++中的一个类,它是Qt GUI编程的核心组件。在某些场景下...

Global site tag (gtag.js) - Google Analytics