新的 Qt 小部件应用程序将无法编译

A new Qt widget application will not compile

我对 Qt 比较陌生,正在学习很多教程。一切都很好。所有脚本均已编译并 运行。 然后,在某些时候,即使是使用 Qt Creator 4.3.1 创建的新 Qt 小部件应用程序,我也会收到错误消息:

C:\  \Documents1\main.cpp:-1: In function 'int qMain(int, char**)':
C:\   \Documents1\main.cpp:6: error: variable 'QApplication a' has initializer but incomplete type
     QApplication a(argc, argv);
                    ^
C:\   \Documents1\main.cpp:11: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^

我不确定发生了什么,但似乎有些设置搞砸了。 QApplication 包含在内,并且在脚本中没有丢失。

111.pro
# Project created by QtCreator 2018-02-23T01:36:28
QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = 111
TEMPLATE = app
DEFINES += QT_DEPRECATED_WARNINGS
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
    main.cpp \
    mainwindow.cpp

HEADERS += \
    mainwindow.h

FORMS += \
    mainwindow.ui

main.cpp
#include "mainwindow.h"
#include <QApplication>

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

return a.exec();
}

mainview.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}

MainWindow::~MainWindow()
{
delete ui;
}

在我看来,这个问题是在尝试 运行 qt5.6_src.zip 来自 https://en.ids-imaging.com/open-source.html 的例子后出现的。

根据Qt's docs,构造函数的签名是QApplication(int &argc, char **argv)。 因此,如果您从 QApplication 继承,那么子类的构造函数必须通过引用传递 argc。根据您的描述,您的子类的构造函数似乎实际上是按值传递 argc (即 int qMain(int, char**) )。那会引起一些问题。

没有完整的代码,我想你需要添加 #include <QApplication>main.cpp

错误消息告诉您缺少什么。

已通过删除 <drive>:\Users\<username>\AppData\Roaming\QtProject<drive>:\Users\<username>\AppData\Roaming\Qt 中的 Qt 文件夹和 QtCreator 文件夹解决此问题。它存储了不正确的设置,我以某种方式通过 运行 开源脚本设置了这些设置。如需更多信息,请访问 Where does QtCreator save its settings?.