Qt 手动生成moc 文件

转载 2015年11月21日 12:15:42

今天在我的一个Qt程序中新添加了一个菜单项和对应的signal和slot之后,编译运行发现出现这样的错误:
Object::connect No Such Slot…………………..
但是以前定义的signal和slot都能够正常工作。而我把这个菜单项对应的signal与以前定义的slot进行连接,也能够正常运行。
那为什么新添加的slot就不可以正常工作呢?

Google搜索了一下,可能导致这种错误的原因有一下几点:
1、查看类声明中有没有Q_OBJECT
要使用slot的类的声明中必须包含Q_OBJECT

2、我声明的函数要添加声明。比如:

private slots:  
    void open();  
    void toggleAniamting();  
    void toggleAutoPlay();  
    void toggleShowFullScreen();  
    void about();  
private slots:  
    void open();  
    void toggleAniamting();  
    void toggleAutoPlay();  
    void toggleShowFullScreen();  
    void about();  

3、那就是要重新生成moc_XXX.cpp文件。
我想起来了,我的VS和Qt配置不知道出了什么问题,moc不能被自动调用,必须手动生成这个moc文件。
凡是存在由Q_OBJECT标示过的class的.h文件,都会由moc生成一个相应的文件。
手动生成moc_XXX.cpp文件的方法:
首先删除原来的moc_XXX.cpp文件。
右键单击要生成moc文件的.h文件,点击属性->自定义生成步骤->常规,出现如下界面:
这里写图片描述
在命令行、输出和附加依赖项里面填上相应的内容。
然后右键单击这个.h文件,点击“编译”,便可生成对应的moc文件。
然后将生成的moc文件添加到源文件中。
重新编译运行工程文件即可。

相关文章推荐

moc文件 如何生成的

合并代码,解决冲突后, 如果发现某个类的moc文件没有生成,或者 发现某个类的moc文件,没有出现在GenerateFiles文件夹下面,而是出现在了SourceFiles文件下面。 那么,出现两...

VS+Qt5生成moc文件

1.选择没有生成moc文件的头文件,右键,点击属性 2.在配置属性中选择常规,将项类型修改为“自定义生成工具” 3.修改自定义生成工具--常规中的“命令行”和“输出”两项 命令行:"$(QTD...

Qt安装—搭建VS2008+QT开发环境

http://blog.csdn.net/mac_cm/article/details/6591168 Qt安装—搭建VS2008+QT开发环境   (一)工欲善其事,必先利其器,废话不多...
  • Huhuang
  • Huhuang
  • 2014年04月02日 15:30
  • 1154

VS下QT工程不能生成moc文件的解决方法

选择要moc的类的头文件,鼠标右键,选择property->Item Type:将此项改为Custom Build Tool, 然后看到左边会变成Custom Build Tool: ...

vs2010中自动生成Qt的moc文件的方法

Qt 程序在交由标准编译器编译之前,先要使用 moc 分析 C++ 源文件。如果它发现在一个头文件中包含了宏 Q_OBJECT,则会生成另外一个 C++ 源文件。这个源文件中包含了 Q_OBJECT...

VS+QT混合编程中 自动生成Qt的moc文件的方法

Qt 程序在交由标准编译器编译之前,先要使用 moc 分析 C++ 源文件。如果它发现在一个头文件中包含了宏 Q_OBJECT,则会生成另外一个 C++ 源文件。这个源文件中包含了 Q_OBJECT ...

Qt(2):MOC文件解析

在Qt下,从QObject派生的类都会生成moc_文件。 1. 比如现在有2个文件,qmyobject.h和qmyobject.cpp,它里面有一个类QMyObject,记为版本A class...
  • oldmtn
  • oldmtn
  • 2015年06月03日 16:33
  • 2773

Qt(2):MOC文件解析

在Qt下,从QObject派生的类都会生成moc_文件。 1. 比如现在有2个文件,qmyobject.h和qmyobject.cpp,它里面有一个类QMyObject,记为版本A ...

vs2010中moc文件生成方法(含有截图)

原文链接:http://blog.sina.com.cn/s/blog_a459dcf50101ded1.html Qt 程序在交由标准编译器编译之前,先要使用 moc 分析 C++ 源文件。如果它发...

Qt MOC处理器 UML图

  • 2016年03月22日 10:40
  • 72KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Qt 手动生成moc 文件
举报原因:
原因补充:

(最多只允许输入30个字)