为什么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; }
在不接触该文件的情况下,只需使用设计器对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::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存储库是一个简单的操作