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

本文总结了Qt/C++编程中常见的两个编译问题及其解决方案:一是因.h文件编码格式错误导致的Norelevantclassesfound.Nooutputgenerated错误;二是由于项目中未指定Qt版本而引发的There’snoQtversionassignedtothisprojectforplatformWin32问题。

一、简述

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

在日常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

这里写图片描述

这里写图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值