Qt中两个类通过信号槽进行传输数据遇到的问题

2023-11-20

1.场景需求

  • 在QGraphicsItem类中发生重绘后,希望将改动的信息在主窗口MainWindow中的textedit控件中显示出来。
  • 例如在选中的QGraphicsItem生成的对象item后,在被鼠标选中时,在textedit中显示这个对象相应的信息。

2.实现方案

  • 在网上查询相关资料后,发现qt实现两个类进行通信、数据传输或联动时,有以下设置方法:
    • 设置全局变量
    • 使用信号槽
    • 使用接口类
  • 本文选用信号槽进行连接,因为需要根据选中不同的item,相应显示item的信息并可以多次选择。

3.遇到问题及解决方案

  • 在QGraphicsItem类设置信号,在MainWindow类设置槽函数,并进行connect。发现报错,
  • 反复确认connect的语法格式没有写错之后,仍然报错。
  • 使用信号槽机制要继承自QObject类或其派生类,并使用Q_OBJECT宏
    • 继承QObject 类后并添加宏,仍然报错,
  • 继承QObject 类要指明public继承方式。
    • 仍然报错
  • 添加QObject出现的问题,报错
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'
  • Multiple Inheritance Requires QObject to Be First(多重继承QObject一定要放在前面
    在这里插入图片描述

  • 若出现编译时出现警告 Warning: Class Node implements the interface QGraphicsItem but does not list it in Q_INTERFACES. qobject_cast to QGraphicsItem will not work!

    • 在类的声明(Q_OBJECT下面)中添加:Q_INTERFACES(QGraphicsItem)可解决该问题.
  • 在未继承QObject 类中,重新继承和添加Q_OBJECT时,要重新qmake和构建一下。

总结:

  • 注意信号与槽的使用条件,
  • 注意QObject继承的方式和顺序
  • 解决bug的思路:多是自己直接搜索报错信息,整理网上资料所得。还是理清思路,规整代码,以清晰问题所在。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt中两个类通过信号槽进行传输数据遇到的问题 的相关文章

随机推荐

  • 利用Apache Tika分页解析pdf文件内容

    Apache Tika 实现pdf文档分页提取内容 Apache Tika是一个多功能的文档内容提取工具 可以提取多种类型的文档内容 常用的如pdf office等格式 网上的例子基本上都是提取整篇文档内容 实际上用Tika提取pdf等文档
  • QT 实现点击窗口以外任何位置即关闭窗口

    bool QTipLabel eventFilter QObject o QEvent e switch e gt type ifdef Q DEAD CODE FROM QT4 MAC case QEvent KeyPress case
  • LeetCode-----第八题-----字符串转换整数 (atoi)

    字符串转换整数 atoi 难度 中等 请你来实现一个 atoi 函数 使其能将字符串转换成整数 首先 该函数会根据需要丢弃无用的开头空格字符 直到寻找到第一个非空格的字符为止 接下来的转化规则如下 如果第一个非空字符为正或者负号时 则将该符
  • Java-spring相关八股

    1 Java中有哪几种方式来创建线程执行任务 继承Thread类 public class zhouyuThread extends Thread public static void main string args zhouyuThre
  • XL4015-ADJ 5A 大电流DC-DC原理图分享

    如有问题 请加扣扣群 460189483 最近咨询LM2596S ADJ 3A芯片竟然已经10元rmb了 于是找到5A负载能力的XL4015 ADJ 正品4元 以后就用这个代替啦 通过比较发现 XL4015的温度低一点 效率高一点 电流大一
  • Android 实时获取SurfaceView渲染的内容截图

    近期的需求 偶尔需要获取当前SurfaceView上渲染的内容视图 因为是通过网页端控制的 类似预览功能吧 百度了好久 没找到能用的 无意间发现了这个类PixelCopy java 网上没什么介绍 安卓系统封装的一个类PixelCopy j
  • 解决plt.title()中文显示问题

    我们直接用plt title 默认是显示英文 如图 应该在代码前加这几行代码就行了 解决中文显示问题 plt rcParams font sans serif SimHei plt rcParams axes unicode minus F
  • VMware虚拟机安装Ubuntu系统步骤详解

    VMware虚拟机安装Ubuntu系统步骤详解 Ubuntu系统介绍 VMware安装Ubuntu步骤 一 Ubuntu系统的下载 二 VMware workstation的下载安装 三 配置Ubuntu虚拟机系统 四 VMware安装Ub
  • vue插件(vue-print-nb)实现打印功能

    vue插件vue print nb实现打印功能 1 安装vue print nb 2 引入Vue项目 3 在组件中使用 4 vue print nb插件优化 1 安装vue print nb Vue2 0版本安装方法 npm install
  • 重命名文件或目录(renameTo)

    File or directory with old name File file new File oldname File or directory with new name File file2 new File newname R
  • list scala 当前位置 遍历_【Scala笔记——道】Scala List 遍历 foldLeft / foldRight详解...

    HOF foldLeft foldRight foldLeft 和 foldRight 都是对于 List 遍历的 高阶函数 是对列表遍历过程中进行函数操作的高阶函数抽象 List 遍历 假设有两个方法如下 求和 def sum ints
  • lyapunov直接法

    文章目录 定义6 6 Lyapunov第一定理 Lyapunov第二定理 用于刻画渐进稳定 内积分析 定义6 6 Lyapunov第一定理 假设 A C A subset C A C是闭的 如果存在A的邻域D和满足下面两条件的连续函数
  • 简单镜面反射

    前言 本篇博客只是一个简单的实现镜面反射功能的例子 主要是当做笔记使用 通过反射光向量实现流程 如下所示 核心要点 如下所示 1 顶点镜面反射颜色值等于反射光颜色乘以反射强度来获取 而入射光向量 法向量 视角向量 反射光向量的关系图如下所示
  • 【计算机毕业设计】基于微信小程序的电影院票务系统

    基于微信小程序的电影院票务系统 开发语言 Java 框架 ssm JDK版本 JDK1 8 服务器 tomcat7 数据库 mysql 5 7 一定要5 7版本 数据库工具 Navicat11 开发软件 eclipse myeclipse
  • 利用背景渐变实现边框样式

    css实现信封边框和虚线样式 利用线性渐变背景以及背景重复完成 1 利用渐变背景实现信封边框样式 div class letter border div letter border margin 100px width 750px heig
  • shopify 前端教程(还在学可能有很多错误理解以及知识点)

    第一步 本地开发环境的搭建 第一步是安装ruby gem 以下是官网的链接 Downloads rubyinstaller org 友情提示 官网下载速度非常慢 我不会翻墙 我是在csdn搜索别人下载好的安装 Windows下安装 ruby
  • 【Arthas】Arthas 类查找和反编译原理

    1 概述 转载 Arthas 类查找和反编译原理 2 开篇 Arthas支持通过类相关的操作命令 包括sc sm jad等 sc Search Class 命令搜索出所有已经加载到 JVM 中的 Class 信息 sm Search Met
  • Windows实例如何通过本地安全策略限制远程登录的IP地址

    Windows实例如何通过本地安全策略限制远程登录的IP地址 阿里云 禁止所有的IP地址连接服务器的RDP端口 远程连接登录服务器 单击 开始 选择 运行 输入gpedit msc 单击 确定 打开本地组策略编辑器 在左侧依次找到 计算机配
  • 新版jdk的keytool没有md5,怎么解决?

    第一种方案 降级你的java sdk版本 jre1 8 0 201 jdk8以下的版本是可以的 参考 Android平台签名证书 keystore 生成指南 DCloud问答 第二种方法参考 http www 360doc com cont
  • Qt中两个类通过信号槽进行传输数据遇到的问题

    1 场景需求 在QGraphicsItem类中发生重绘后 希望将改动的信息在主窗口MainWindow中的textedit控件中显示出来 例如在选中的QGraphicsItem生成的对象item后 在被鼠标选中时 在textedit中显示这