Qt / C++常见小问题汇总(一)

来源:互联网 发布:linux进入grub界面 编辑:程序博客网 时间:2024/06/06 02:02

一、简述

时隔两个月后的第一篇文章。

在日常Coding中可能会遇到各种问题,但是遇到之后解决了并没有及时的记录,导致再次遇到相同或者类似问题时再次懵逼,所以记录下这些问题还是很有帮助的。今天就简单讲述两个常见的小问题,以及解决方案。以此开篇Qt/C++常见小问题汇总系列.

问题列表

问题一:

No relevant classes found. No output generated.

问题二

There’s no Qt version assigned to this project for platform Win32.


二、问题解析

问题一、No relevant classes found. No output generated.

当我们在用VS编译程序时,VS输出栏目中出现了上方的提示,说明你的文件格式有问题,可能会导致你编译不过。下面就给一个小示例看一下效果。


一般情况下我们新建一个继承QObject的Qt类,都会附带 Q_OBJECT 宏定义,这个宏定义非常重要,对于这个宏定义具体代表什么意思,大家可以百度一下。加上Q_OBJECT 宏定义之后,Qt会自动生成moc_ClassName.cpp文件(这里也不在解释这个文件的具体作用,大家可以自行百度)。我们可以看到下图中的moc_MyWidget.cpp,在程序未编译之前,这个文件其实并不存在。

这里写图片描述

我们双击这个文件,VS提示如下:

这里写图片描述

项目目录下也没有这个文件。

这里写图片描述

我们开始编译该工程,然后moc_mywidget.cpp,显示如下,这个文件的内容就是Qt元对象的编译器生成的。这里写了这么多,并未发现任何问题。

这里写图片描述

我们改变mywidget.h的编码格式,点击确定并保存。然后重新编译。

这里写图片描述

这里截取出编译输出。

这里写图片描述

很明显,我们看到了这条编译输出语句,没有找到相关的类,没有文件生成。

mywidget.h(0): Note: No relevant classes found. No output generated.

我们再次双击moc_mywidget.cpp文件,发现这里面空空如也,也就是说我们修改了mywidget.h的编码格式导致未生成正确的moc_mywidget.cpp文件。

这里写图片描述

上面是我主动修改了编码格式导致编译失败。一般情况下,我们可能会从其他地方附加一个类的.h和.cpp文件,如果这个.h文件的编码格式是有问题的,就会导致如上的错误,那么我们可以看一下我们项目中其他文件是什么编码格式的,或者重新添加一个Qt类,然后查看新建类.h文件的编码格式,然后将有问题的文件统一编码格式就可以了。


点击高级保存选项修改文件的编码格式。
这里写图片描述

修改为正确的编码格式。

这里写图片描述


问题二、There’s no Qt version assigned to this project

这里写图片描述

对于这个问题,我们可以检查如下两个配置是否设置正确。

(1)Qt Options

这里写图片描述这里写图片描述

(2)Qt Project Settings

这里写图片描述

这里写图片描述

原创粉丝点击