最近遇到一个问题,程序编译时出现报错: Must construct a QApplication before a QWidget。 我的main.cpp有这样的代码
int main(int argc
, char *argv
[])
{
QApplication
a(argc
, argv
);
}
另外一个SSCT.h
class SSCT : public QWidget
{
Q_OBJECT
public:
explicit SSCT(QWidget
*parent
= nullptr);
};
extern SSCT theApp
;
SSCT.CPP
#include "SSCT.h"
SSCT theApp
;
SSCT
::SSCT(QWidget
*parent
) : QWidget(parent
)
{
}
分析原因:Qt要求先构造QApplication再构造QWidget,SSCT theApp 是一个全局的,会先执行SSCT theApp再 QApplication a(argc, argv); 这违反了 Qt的规则; 解决方法:SSCT *theApp; 改成指针,需要用的时候再new;