QT中添加Q_OBJECT出现的问题

2023-11-17

Multiple Inheritance Requires QObject to Be First(多重继承QObject一定要放在前面)

我在用class My_Node : public QGraphicsItem,public QObject来生成自己的类时,想使用信号和槽机制,但这是dys_node.h中没有Q_OBJECT,不能使用信号槽。我将Q_OBJECT加上之后,出现几个不知道是什么的错误。然后我将工程目录下的Makefile删除,然后重新编译、链接文件,刚才的错误消失了,但出现如下三个错误:

error: 'staticMetaObject' is not a member of 'QGraphicsItem'

error: 'qt_metacast' is not a member of 'QGraphicsItem'

error: 'qt_metacall' is not a member of 'QGraphicsItem'

通过google,我发现这个错误是由于没有继承QObject类而引起的,但是我已经继承了QObject类了啊,到底是怎么回事呢?

最后终于在网上找到了答案,当多继承的时候,要将QObject放在前面,即将类的声明改为

class My_Node : public QObject,public QGraphicsItem

问题就解决了!!!

下面是我从网络上找到的说明原文:

Just got this error message while compiling a tiny class that derives from QTreeWidgetItem:

error C2039: 'staticMetaObject' : is not a member of 'QTreeWidgetItem'

What this is saying is that QTreeWidgetItem does not inherit from QObject, meaning that your own, singly-inherited class also does not inherit from QObject. Inheriting from QObject is one of the prerequisites to using the Q_OBJECT macro, which, if you’re anything like me, you automatically insert into any Qt GUI related class.

If you’re not using any of the meta object stuff in your subclass, such as signals/slots or properties, just take out the Q_OBJECT macro. If you need to use signals and slots, you’ll need to make your subclass multiply-inherit from QObject as well. If you take this route, remember that “Multiple Inheritance Requires QObject to Be First”, otherwise you’ll get either the same error as above, or something along the lines of “YourClass inherits from two QObject subclasses” from the moc。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT中添加Q_OBJECT出现的问题 的相关文章

随机推荐

  • ControlNet精准控制AI绘画教程

    ControlNet精准控制AI绘画教程 AI绘画相信大家都已经不陌生了 虽然AI绘画出图很方便 但是要让其生成一副自己满意的图 还是需要费一番心思 有时候多次调整关键词就是生成不了自己想要的画面 这些一直以来都是AI绘画的痛点但就在最近
  • Vue前端框架入门,真好学,都给我学起来

    前言 今天要分享的知识是Vue前端框架 码字不易 点个赞 转载请说明 开发工具 HBuilderX Eclipse 目录 一 Vue是什么 二 库和框架的区别 三 MVVM介绍 四 cdn的下载及入门案例 定义边界和绑定边界 案例二 数据双
  • bigdecimal加减乘除运算方法

    BigDecimal是Java中的一个类 用于处理高精度的十进制数值计算 在进行浮点数计算时 由于浮点数的精度有限 可能会出现精度丢失的情况 而BigDecimal可以避免这种情况的发生 因此在需要高精度计算的场合 使用BigDecimal
  • CentOS7安装oracle19c教程

    参考 https zhuanlan zhihu com p 571737575 1创建组和用户 vi etc hosts root rhel cat etc redhat release Red Hat Enterprise Linux S
  • 使用designer写pyqt程序

    1 创建一个qt程序 复制其ui文件至python文件夹 ui界面如下 2 vscode 配置pyqt集成环境 右击ui文件进行编译 生成UI mainwindow py文件
  • LNK2019: 无法解析的外部符号 整理

    无法解析的外部符号是Windows下C 编译的常见链接错误 收集整理备忘 本文随遇到的问题长期更新 我目前遇到的错误可以分为3类 1 编译工具链修改了对应库函数的定义 2 编译参数导致定义和链接库不一致 3 库依赖冲突 4 未导入对应库 常
  • WiFi密码别问了,这神器帮你搞定一切!

    我们经常会遇见朋好去你家做客 第一句就是问你家WiFi 密码 如果密码负责不仅说的麻烦 还有可能暴露自己的密码 毕竟很多人密码都喜欢设置的一样 但是今天这个GitHub 工具WiFi Card完全就能解决这个问题 这个工具就是把 WiFi
  • C++小白课本练习4

    练习目录 ConsoleApplication1 h 头文件定义类 Student myDate Student 类 myDate 类 第二章课本测试3验证类功能的驱动程序 cpp 第二章课本测试4使用指针的方式驱动程序 cpp 第二章课本
  • mysql数据库中文乱码的问题

    今天下午 在Qt中往mysql数据库中插入数据时 中文显示乱码 如下图所示 开始以为是数据库字符编码的问题 1 使用set character set database utf8 在命令行上修改字符编码 但是重启mysql之后 字符编码并没
  • Centos7系统防火墙使用教程【详解】

    CentOS 7是一种常见的Linux操作系统 防火墙作为网络安全的第一道防线 对于服务器的安全至关重要 本文将介绍CentOS 7系统中防火墙的使用教程 包括如何开启 关闭 配置以及防火墙规则的添加和删除 一 查看防火墙状态 在开始操作之
  • 关于Android Service真正的完全详解,你需要知道的一切

    Service全部内容基本会在本篇涉及到 我们将围绕以下主要知识点进行分析 Service简单概述 Service在清单文件中的声明 Service启动服务实现方式及其详解 Service绑定服务的三种实现方式 关于启动服务与绑定服务间的转
  • Verilog--CDC跨时钟域处理(快时钟域到慢时钟域)

    Verilog CDC跨时钟域处理 快时钟域到慢时钟域 CDC问题 单比特信号的跨时钟域问题 从快时钟域到慢时钟域 从慢时钟域到快时钟域 多比特信号的跨时钟域问题 异步FIFO 握手协议 DMUX 格雷码 双D触发器 今天先写单比特信号从快
  • 开始前准备

    开始前准备 一 环境预览 二 安装Ubuntu 三 安装arm gcc工具链 四 Ubuntu构建LiteOS所需要的工具链 五 安装STM32CubeMX软件 六 串口调试助手下载 七 ST Link和USB转TTL串口调试工具 一 环境
  • Express_2 Express Generator

    本文为课程笔记 总体来说 express generator可以帮助我们快速搭建一个express环境 首先 要将它安装在全局环境里 npm install express generator g 然后 就可以使用express 项目名 创
  • 数组入门练习:螺旋遍历二维数组

    NC38 螺旋矩阵 给出一个 n n n 行 m m m 列的二维数组 按螺旋的顺序返回矩阵中的所有元素 比如 输入为 1 2 3 4 5 6 7 8 9 输出为 1 2 3 6 9 8 7 4 5 观察上图
  • 关于mmsegmentation的自定义数据集格式的一些坑(2)

    这次又有任务要跑mmseg 我本意是拒绝的 奈何老板喜欢 mm系列的东西 那一套流程 真心玩不转 玩着玩着心就累了 mm系列和detectron差不多 要找其代码流转 都是要先看配置文件 比较麻烦 需要一定的经验 然后前面两篇都写了我是怎么
  • Android SELinux

    Google参考链接 https source android com docs core architecture aidl aidl hals sepolicy A 通信框架SE文件修改 public attributes vendor
  • 【canal系】canal集群异常Could not find first log file name in binary log index file

    这里先说明下这边使用的canal版本号为1 1 5 在描述这个问题之前 首先需要简单对于canal架构有个基本的了解 canal工作原理 canal 模拟 MySQL slave 的交互协议 伪装自己为 MySQL slave 向 MySQ
  • 详解@Override注解

    目录 1 是什么 2 为什么用 3 举例说明 1 示例一 2 示例二 3 示例三 1 是什么 Override注解是伪代码 用于表示被标注的方法是一个重写方法 Override注解 只能用于标记方法 并且它只在编译期生效 不会保留在clas
  • QT中添加Q_OBJECT出现的问题

    Multiple Inheritance Requires QObject to Be First 多重继承QObject一定要放在前面 我在用class My Node public QGraphicsItem public QObjec