gpt4 book ai didi

c++ - Qt 设计师 Q PaintError

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:50:04 26 4
gpt4 key购买 nike

我在使用 Qt4 时遇到了问题。

我的Qt

Qt Creator 2.3.1 

Based on Qt 4.7.4 (32 bit)

2 天前,我安装了 Qt designer 和 Opencv,它们运行良好,除了一个奇怪的错误。

这个错误说,

QWidget: Must construct a QApplication before a QPaintDevice

当我清除 main.cpp 文件中的任何类时,会发生这个奇怪的错误。例如,

#include <QtGui/QApplication>
#include "mainwindow.h"
#include <iostream>

using namespace std;

MainWindow ana_pencere; // If I dont decleare, error dissappers.

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
/** @function main */

return a.exec();
}

所以,我不知道为什么会出现这个错误。

如果有人帮助我,我将不胜感激。

最佳答案

在创建任何 QWidgets 之前,您必须构建 QApplication。

您正在创建全局对象 MainWindow,主要调用 QApplication 之前。

你可以通过使它简单地拥有一个指向对象的全局指针来解决这个问题,然后再分配它,就像这样:

#include <QtGui/QApplication>
#include "mainwindow.h"
#include <iostream>

using namespace std;

MainWindow* ana_pencere_ptr;
//Pointer to an object. Doesn't initialize an object.

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
ana_pencere_ptr = &w;
w.show();

/** @function main */

return a.exec();
}

基本上,这条线

QApplication a(argc, argv);

必须在其他 Qobjects 之前。在您提供的代码中,全局对象在 main 之前(以及在您构建 QApplication 之前)被初始化,因此您的问题。

关于c++ - Qt 设计师 Q PaintError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17385556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com