qt-vs2010 手动添加新的qt类时,无法生成moc文件的解决

本文介绍在Visual Studio中使用QT的信号和槽机制时遇到的问题及其解决方案,特别是如何正确配置.h文件以确保编译器能正确识别信号和槽。

过程 http://blog.sina.com.cn/s/blog_5e42f31a0100y52r.html 提到的:

6. 在类声明的开始位置必须加上 Q_OBJECT 语句,它将告诉编译器在编译之前必须先应用 moc 工具进行扩展,从而才能够使用singal和slot机制。

VS中使用QT代码创建界面,无法实现SLOT函数,解决方法:
1).右击.h文件(使用QT代码创建界面的)-属性-配置属性-常规-项类型选成自定义生成工具-确定;
2).再次打开属性-看到界面中新增了一个自定义生成工具-修改其中的-常规-命令行、说明及输出
命令行:moc.exe   -DUNICODE -DWIN32   -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -D_MSC_VER=1400 -DWIN32 -o moc_DlgEditAccount.cpp DlgEditAccount.h
说明:Running MOC
输出:moc_DlgEditAccount.cpp


步骤2中的参数改掉,用可以编译成功的.h文件(一般是项目创建出来的那个.h)里自定义生成工具的参数即可。

<think>好的,我需要解决用户在Visual Studio和Qt环境下设置moc文件生成路径的问题。首先,用户已经提供了一些相关的引用资料,我需要仔细分析这些引用内容,找出适用的方法。 根据引用[2],在Qt的.pro文件中,可以通过设置MOC_DIR来指定moc文件生成路径。例如: ``` MOC_DIR = temp/moc ``` 这会在项目目录下创建一个temp/moc文件夹存放生成moc文件。不过用户现在是在Visual Studio中使用Qt,可能需要不同的配置方法,因为VS通常使用.vcxproj文件而不是.pro文件。 引用[3]提到了在.pro文件中根据不同的构建配置(Debug/Release)设置不同的MOC_DIR路径。例如: ``` CONFIG(debug, debug|release) { MOC_DIR = ../../build/myapp/debug } CONFIG(release, debug|release) { MOC_DIR = ../../build/myapp/release } ``` 这说明可以通过条件判断来区分不同配置的路径。但是在Visual Studio中,可能需要通过项目属性进行设置。 接下来,我需要考虑Visual Studio中的Qt插件设置。通常,Qt VS Tools会在项目属性中添加Qt相关的设置选项。用户可能需要在这里调整moc的输出目录。具体步骤可能包括: 1. 在Visual Studio中打开项目,右键点击项目,选择“Qt Project Settings”。 2. 在Qt Meta-Object Compiler (moc)选项中,找到输出目录的设置,修改为自定义路径。 另外,可能需要直接编辑.vcxproj文件添加相应的XML配置来指定MOC输出路径。例如: ```xml <PropertyGroup> <MocOutputPath>custom/path/for/moc</MocOutputPath> </PropertyGroup> ``` 或者根据不同的配置设置: ```xml <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <MocOutputPath>..\build\debug\moc</MocOutputPath> </PropertyGroup> ``` 还需要注意,设置正确的路径后,需要确保生成过程中没有权限问题,路径存在或能够自动创建。此外,清理项目后重新生成,确认moc文件生成到了指定位置。 用户可能遇到的问题包括配置错误导致moc文件生成到指定目录,或者路径设置不正确导致编译错误。需要检查生成目录的权限,以及路径是否正确。同,确保在项目属性中正确应用了Qt的配置,并重新运行qmake或重新生成解决方案以应用更改。 总结步骤:通过Qt VS Tools修改项目属性中的moc输出路径,或者手动编辑.vcxproj文件添加MocOutputPath属性。根据不同的构建配置设置不同的路径,确保路径有效,并重新生成项目验证。</think>在Visual Studio与Qt集成开发环境中设置moc文件生成路径,可通过以下两种方法实现: ### 方法一:通过Qt项目属性设置 1. 右键点击项目选择**Qt Project Settings** 2. 展开**Qt Meta-Object Compiler (moc)**配置项 3. 在**Output Directory**字段中输入自定义路径,例如: ``` $(SolutionDir)\generated\moc\$(Configuration) ``` 该路径表达式会根据不同的编译配置自动创建子目录[^3] ### 方法二:手动编辑项目文件 1. 在.vcxproj文件添加配置段: ```xml <PropertyGroup> <MocOutputPath>generated/moc</MocOutputPath> </PropertyGroup> ``` 2. 需要区分Debug/Release: ```xml <PropertyGroup Condition="'$(Configuration)'=='Debug'"> <MocOutputPath>build/debug/moc</MocOutputPath> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)'=='Release'"> <MocOutputPath>build/release/moc</MocOutputPath> </PropertyGroup> ``` ### 验证配置效果 1. 执行**qmake**重新生成项目文件 2. 清理解决方案后重新编译 3. 在输出目录查看生成moc_*.cpp文件是否位于指定路径 $$注意:路径中的斜杠应使用反斜杠或双反斜杠,推荐使用相对路径避免硬编码[^2]$$ ### 常见问题处理 1. **路径权限问题**:确保目标目录有写入权限 2. **多配置冲突**:建议采用`$(Configuration)`宏自动区分编译型[^3] 3. **缓存干扰**:修改路径后需执行**Clean Solution**清除历史生成文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值