将Qt moc文件添加到项目中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Qt moc文件添加到项目中相关的知识,希望对你有一定的参考价值。

有没有办法强制重新编译其他项目moc文件?我使用visual studio,我有一个qt项目,在那里我添加了其他带接口和信号/插槽的项目类(比方说thing.cppthing.h

ui_thing.h(已包括generated files文件夹),

moc_thing.cpp中的generated filesdebug(由于主要项目处于调试模式),

thing.ui进入Form files

它工作正常,直到我决定做一些更改,添加一些插槽/信号的东西。你可以猜测包括moc文件不重新编译。我决定改变thing.h的一些属性。

我从主项目文件中复制了参数,因此在命令行部分中有

"$(QTDIR)inmoc.exe" "$(InputPath)" -o ".GeneratedFiles$(ConfigurationName)moc_$(InputName).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQWT3D_DLL -DQT_DLL -DQT_SVG_LIB -DQT_SCRIPT_LIB -DQT_MULTIMEDIA_LIB "-I.parsers" "-I$(QWTDIR)include" "-I.ProductionHistoryGeneratedFiles" "-I.ProductionHistory" "-I.GeneratedFiles" "-I$(QTDIR)include" "-I.GeneratedFiles$(ConfigurationName)." "-I$(QTDIR)includeqtmain" "-I$(QTDIR)includeQtCore" "-I$(QTDIR)includeQtSql" "-I$(QTDIR)includeQtGui" "-I." "-I$(Boost)." "-I.well groups widget" "-I. ules widget" "-I.gui" "-I$(QTDIR)includeQtSvg" "-I$(QTDIR)includeQtScript" "-I$(QTDIR)includeActiveQt" "-I$(QTDIR)includeQtMultimedia"

在输出数据部分".databaseOpeningGeneratedFiles$(ConfigurationName)moc_$(InputName).cpp"

在附加依赖项部分中有"$(QTDIR)inmoc.exe"; $(InputPath)

但它仍然没有重新编译。有办法解决这个问题吗?

答案

尝试检查/修复项目文件* .vcxproj

  1. 在PropertyGroup Label =“Globals”部分添加关键字
<PropertyGroup Label="Globals">
   <ProjectGuid>....
   <RootNamespace>...
   <Keyword>Qt4VSv1.0</Keyword> <-----------------
</PropertyGroup>
  1. 检查ProjectExtensions / VisualStudio / UserProperties部分属性Qt5Version_x0020_Win32(>> Qt5 ...)
 <ProjectExtensions>
    <VisualStudio>
      <UserProperties MocDir=".GeneratedFiles$(ConfigurationName)" 
         Qt5Version_x0020_Win32="$(DefaultQtVersion)"  <-------
         UicDir=".GeneratedFiles" />
    </VisualStudio>
  </ProjectExtensions>

以上是关于将Qt moc文件添加到项目中的主要内容,如果未能解决你的问题,请参考以下文章

如何通过单击适配器类中代码的项目中的删除按钮来删除列表视图中的项目后重新加载片段?

Qt C++ 项目中 Xamarin 项目中代码的可重用性

如何手动将 Qt .rep 复制到 .h,然后将它们 moc 到 .cpp

如何在 qmake 项目中向 moc 添加特定标志?

为啥 Qt Creator 在我的所有文件上运行 MOC?

涉及 moc 文件的 Qt 错误未通过清理项目修复