我在使用 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();
}
所以,我不知道为什么会发生这个错误。
如果有人帮助我,我将不胜感激。
最佳答案
在创建任何 QWidget 之前,您必须构建 QApplication。
您将在 main 调用 QApplication 之前创建一个全局对象 MainWindow。
您可以通过设置一个指向对象的全局指针来解决此问题,然后稍后对其进行分配,如下所示:
#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);
必须位于其他 Qobject 之前。在您给出的代码中,全局对象在 main 之前(以及在构造 QApplication 之前)初始化,因此您的问题。
关于c++ - Qt 设计器 Q PaintError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17385556/