Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Qt Creator生成赢得';不编译? 我对C++或编程一般都不陌生,但这是我第一次尝试使用Qt。创建新项目时,它会生成以下mainwindow.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; }_C++_Qt_Ide - Fatal编程技术网

为什么Qt Creator生成赢得';不编译? 我对C++或编程一般都不陌生,但这是我第一次尝试使用Qt。创建新项目时,它会生成以下mainwindow.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; }

为什么Qt Creator生成赢得';不编译? 我对C++或编程一般都不陌生,但这是我第一次尝试使用Qt。创建新项目时,它会生成以下mainwindow.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; },c++,qt,ide,C++,Qt,Ide,在不接触该文件的情况下,只需使用设计器对ui文件进行一些更改,然后尝试构建项目以进行预览,我就得到了两个行的“不完整类型的无效使用”问题 ui(新ui::main窗口)和ui->setupUi(此窗口) 据我所知,问题在于它试图在实例化类之前引用MainWindow。但创建者自己生成了代码。对于一个新的Qt项目来说这正常吗?我有没有跳过一步?更重要的是,解决这个问题的最佳方法是什么 为什么Qt Creator会生成无法编译的项目 没有。是的。你甚至承认了这一点 只是在ui文件中做一些更改 你已经

在不接触该文件的情况下,只需使用设计器对ui文件进行一些更改,然后尝试构建项目以进行预览,我就得到了两个行的“不完整类型的无效使用”问题
ui(新ui::main窗口)
ui->setupUi(此窗口)

据我所知,问题在于它试图在实例化类之前引用MainWindow。但创建者自己生成了代码。对于一个新的Qt项目来说这正常吗?我有没有跳过一步?更重要的是,解决这个问题的最佳方法是什么

为什么Qt Creator会生成无法编译的项目

没有。是的。你甚至承认了这一点

只是在ui文件中做一些更改

你已经回答了你自己的问题。您破坏了
.ui
文件

但创建者自己生成了代码

不是真的。生成的代码所依赖的
ui\u main window.h
来自
.ui
文件。从
主窗口.cpp
的角度来看,
.ui
文件的内容同样重要

您不能随意选择您称之为代码的内容和不称之为代码的内容。所有预生成的文件,包括
.ui
文件,构成项目的代码

您现在正在抱怨,当您刚刚承认更改了所述代码时,Qt Creator以某种方式生成了无用的代码

很可能您已经更改了
.ui
文件中的类名称,因此
ui\u MainWindow.h
中没有声明
ui::MainWindow
。回想一下,
ui\u main window.h
文件是从
.ui
文件生成的,通过更改
.ui
文件,可以使其他文件(例如
.cpp
文件)的内容不正确:它们都必须引用一致的类名

您可以通过单击
“ui\u main window.h”
字符串并在Qt Creator中按F2键轻松验证这一点。它将打开头文件,您现在可以检查它以确定它声明了哪些类(如果有的话)。最有可能的是,直接从现在已更改的
.ui
文件派生的该文件无法声明“unchanged”
.cpp
文件所依赖的类

维护依赖文件以保持项目一致性完全取决于您。如果不将必要的更改(例如,
.ui
中的类和成员名称)传播到其他文件,则对一个文件(例如,
.ui
文件)的更改会中断其他文件的编译,这是正常的,也是完全可以预料的

但是,在执行任何其他操作之前,请删除生成文件夹并重新生成项目。如果错误仍然存在,请调查您在
.ui
文件中损坏了什么

将来,始终将任何自动生成的项目立即签入到版本控制中,以便在出现问题时更清楚地了解对代码所做的更改。初始化git存储库是一个简单的操作,而且有优秀的工具和专门知识可以让它成为一种轻松的体验。如果您从一开始就没有使用版本控制,那么您就做错了

为什么Qt Creator会生成无法编译的项目

没有。是的。你甚至承认了这一点

只是在ui文件中做一些更改

你已经回答了你自己的问题。您破坏了
.ui
文件

但创建者自己生成了代码

不是真的。生成的代码所依赖的
ui\u main window.h
来自
.ui
文件。从
主窗口.cpp
的角度来看,
.ui
文件的内容同样重要

您不能随意选择您称之为代码的内容和不称之为代码的内容。所有预生成的文件,包括
.ui
文件,构成项目的代码

您现在正在抱怨,当您刚刚承认更改了所述代码时,Qt Creator以某种方式生成了无用的代码

很可能您已经更改了
.ui
文件中的类名称,因此
ui\u MainWindow.h
中没有声明
ui::MainWindow
。回想一下,
ui\u main window.h
文件是从
.ui
文件生成的,通过更改
.ui
文件,可以使其他文件(例如
.cpp
文件)的内容不正确:它们都必须引用一致的类名

您可以通过单击
“ui\u main window.h”
字符串并在Qt Creator中按F2键轻松验证这一点。它将打开头文件,您现在可以检查它以确定它声明了哪些类(如果有的话)。最有可能的是,直接从现在已更改的
.ui
文件派生的该文件无法声明“unchanged”
.cpp
文件所依赖的类

维护依赖文件以保持项目一致性完全取决于您。如果不将必要的更改(例如,
.ui
中的类和成员名称)传播到其他文件,则对一个文件(例如,
.ui
文件)的更改会中断其他文件的编译,这是正常的,也是完全可以预料的

但是,在执行任何其他操作之前,请删除生成文件夹并重新生成项目。如果错误仍然存在,请调查您在
.ui
文件中损坏了什么

将来,始终将任何自动生成的项目立即签入到版本控制中,以便在出现问题时更清楚地了解对代码所做的更改。初始化git存储库是一个简单的操作