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

时间:2018-02-23 07:41:18

标签: qt qt-creator qt-designer

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

C:\  \Documents\111\main.cpp:-1: In function 'int qMain(int, char**)':
C:\   \Documents\111\main.cpp:6: error: variable 'QApplication a' has initializer but incomplete type
     QApplication a(argc, argv);
                    ^
C:\   \Documents\111\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;
}

在我看来,尝试从https://en.ids-imaging.com/open-source.html运行qt5.6_src.zip示例后出现此问题。

3 个答案:

答案 0 :(得分:1)

如果没有完整的代码,我猜您需要将#include <QApplication>添加到main.cpp

错误消息告诉您缺少的内容。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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