qt: undefined reference to `vtable for aaa‘

版本qt4.8.6,编译报错“main.cpp:(.text+0x3b): undefined reference to `vtable for aaa'”

就一个main.cpp

#include <QApplication>
#include <QTimer>
#include <QCursor>
#include <QMouseEvent>
#include <QDesktopWidget>
#include <QDebug>
#include <qglobal.h>class aaa:public QApplication
{Q_OBJECT
public:aaa(int argc, char *argv[]):QApplication(argc,argv){}
private slots:void moveMouse(){QPoint point(100, 100); // 设置鼠标移动的目标位置QMouseEvent mouseEvent(QEvent::MouseMove, getRandomPosition(), Qt::NoButton, Qt::NoButton, Qt::NoModifier);QApplication::sendEvent(QApplication::desktop(), &mouseEvent);qDebug() << "Mouse moved to" << getRandomPosition();}QPoint getRandomPosition() {int screenWidth = QDesktopWidget().width();int screenHeight = QDesktopWidget().height();return QPoint(qrand()%screenWidth, qrand()%screenHeight);
}
};
int main(int argc, char *argv[]) {aaa app(argc, argv);QTimer timer;QObject::connect(&timer, SIGNAL(timeout()), &app, SLOT(moveMouse()));timer.start(1000*60*10);return  app.exec();
}
#include "main.moc"   //这一句很关键

由于类aaa使用了信号槽,并且写在源文件中,致使找不到main.moc,需要在文件末尾主动包含“main.moc”

使用 #include "main.moc" 或者类似的包含 .moc 文件的情况,通常出现在以下两种情况:

  1. 当你在.cpp源文件中定义了一个Q_OBJECT宏的类时。
  2. 当你手动调用 moc 命令来处理一个头文件,并将生成的源文件包含到你的项目中时。

如果你没有在 .cpp 文件中定义 Q_OBJECT 宏的类,并且没有手动使用 moc,那么你不需要包含 .moc 文件。通常,在用 qmake 或 CMake 等构建系统生成的项目中,.moc 文件会自动被处理和包含,不需要你手动包含。

为了避免以上问题出现,如果使用率Q_OBJECT宏,该类必须在头文件声明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/701123.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

制造业装备虚拟3D云展馆开发提升企业营销效果

随着元宇宙时代的到来&#xff0c;商城的运营模式也在发生深刻变革。在这一大背景下&#xff0c;元宇宙商城更加注重场景营造和商品的线上互动体验。3D技术的迅猛发展&#xff0c;为电商行业带来了全新的展示、体验与服务模式&#xff0c;电商3D化已成为不可阻挡的潮流。 华锐3…

互联网搞钱大变天,这有几条活路

互联网搞钱大变天&#xff0c;这有几条活路 靠互联网营生的各位同胞&#xff0c;你们有没有想过这样一个问题&#xff1a;假如有一天你的自媒体账号全被封了&#xff0c;你手上的操作项目全都黄了&#xff0c;你会怎么办&#xff1f; 就封号这事在这几年相信大家都不会陌生&a…

word2019 64位 NoteExpress突然无法使用解决方法

之前用的好好的&#xff0c;去除格式化运行过一次。 打开别的文档&#xff0c;突然发现红框中的图标全变灰了 根据教程添加 加载项&#xff0c;然后word以管理员身份重启&#xff0c;NE也以管理员身份运行&#xff0c;又可以了 然后突然又不行了&#xff0c;重启电脑后NE变成…

上位机图像处理和嵌入式模块部署(树莓派4b的提高版)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 目前人工智能非常火&#xff0c;但是人工智能需要极高的算力和海量的数据&#xff0c;因此相关的关联公司非常吃香&#xff0c;nvidia就是提供算力…

数据结构与算法学习笔记十---链队列的表示和实现(C语言)

目录 前言 1.什么是链队 2.链队的表示和实现 1.定义 2.初始化 3.销毁 4.清空 5.空队列 6.队列长度 7.获取队头 8.入队 9.出队 10.遍历队列 11.完整代码 前言 本篇博客介绍链栈队列的表示和实现。 1.什么是链队 链队是采用链式存储结构实现的队列。通常链队使用单…

nginx 发布静态资源

一. nginx 发布静态资源 在nginx中nginx.conf配置文件中添加内容如下&#xff1a; server {listen 90;server_name localhost;# 配置静态资源文件&#xff0c;就可以访问了location / {root /home/fooie-shop;index index.html;}# 配置音频和图片资源location /imoo…

用大于meilisearch-java-0.7.0.jar的报错的解决

Elasticsearch 做为老牌搜索引擎&#xff0c;功能基本满足&#xff0c;但复杂&#xff0c;重量级&#xff0c;适合大数据量。 MeiliSearch 设计目标针对数据在 500GB 左右的搜索需求&#xff0c;极快&#xff0c;单文件&#xff0c;超轻量。 所以&#xff0c;对于中小型项目来说…

Ceph集群扩容及数据再均衡原理分析

用户文件在Ceph RADOS中存储、定位过程大概包括&#xff1a;用户文件切割成对象、对象映射到PG、PG分组PGP、PG映射到OSD。这些过程中&#xff0c;可能涉及了大量概念和变量&#xff0c;而其实它们大部分是通过HASH、CRUSH等算法计算出来的&#xff0c;初始参数可能也就只有这么…

Day28

回溯算法part02 LC组合总和II 终止条件&#xff0c;sumn且mid.size()k加入result。其他终止条件sum>n或者mid.size()>k也结束一样可以引入剪枝操作进行优化&#xff0c;其实sum>n也可以算是剪枝操作的一部分 LC17电话号码的字母组合&#xff08;超时5min&#xff…

Ubuntu 安装chrome和chromedriver

1.安装包下载 百度网盘地址 2.更新软件包 sudo apt-get update 3.安装chrome sudo apt install ./google-chrome-stable_current_amd64.deb 4.检查是否安装成功 google-chrome --version 5.安装chrome-driver驱动&#xff0c;解压zip文件 unzip chromedriver_linux64.z…

如何使用AI总结超长PDF文件?NoteGPT做到了!

NoteGPT&#xff08;PDF Summary with AI - NoteGPT&#xff09;是我在做一个产品&#xff0c;其中一个功能就是如题&#xff0c;总结超长的PDF文件。 这篇文章从业务和技术的角度&#xff0c;来给大家分享下&#xff0c;我是如何实现的。 为什么要做总结总结超长PDF文件&…