qmoc文件_qt 手动生成moc 文件 | 学步园

今天在我的一个Qt程序中新添加了一个菜单项和对应的signal和slot之后,编译运行发现出现这样的错误:

Object::connect No Such Slot.......................

但是以前定义的signal和slot都能够正常工作。而我把这个菜单项对应的signal与以前定义的slot进行连接,也能够正常运行。

那为什么新添加的slot就不可以正常工作呢?

Google搜索了一下,可能导致这种错误的原因有一下几点:

1、查看类声明中有没有Q_OBJECT

要使用slot的类的声明中必须包含Q_OBJECT

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

privateslots:

voidopen();

voidtoggleAniamting();

voidtoggleAutoPlay();

voidtoggleShowFullScreen();

voidabout();

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文件添加到源文件中。

重新编译运行工程文件即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值