Qt信号槽传递自定义结构体

2023-10-30

1.定义结构体并注册元对象

//1.定义结构体
struct Student
{
    int     m_id;
    int     m_age;
    QString m_name;
};


//2.注册元对象
Q_DECLARE_METATYPE(Student)

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private slots:
    void onSigSendStruct( const QVariant varValue);

signals:
    void sigSendStruct( const QVariant varValue);
}

2.连接信号槽

    connect(this, &MainWindow::sigSendStruct,
            this, &MainWindow::onSigSendStruct);

3.使用QVariant打包数据并发送

    Student iStudent;

    iStudent.m_id = 1;
    iStudent.m_age = 22;
    iStudent.m_name = "Allen";


    QVariant varValue = QVariant::fromValue(iStudent);
    emit sigSendStruct(varValue);

 4.在槽函数中解包并打印


void MainWindow::onSigSendStruct(const QVariant varValue)
{

    if (varValue.canConvert<Student>())
    {
        Student student = varValue.value<Student>();
         qDebug()<<"ID : "<<student.m_id;
         qDebug()<<"Age : "<<student.m_age;
         qDebug()<<"Name : "<<student.m_name;
    }

}

5.运行结果:

 

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

Qt信号槽传递自定义结构体 的相关文章

  • 右键单击 QPushButton 上的 contextMenu

    对于我的应用程序 我在 Qt Designer 中创建了一个 GUI 并将其转换为 python 2 6 代码 关于一些QPushButton 与设计器创建 我想添加右键单击上下文菜单 菜单选项取决于应用程序状态 如何实现这样的上下文菜单
  • 在 4K 屏幕上使用 Matplotlib 和 TKAgg 或 Qt5Agg 后端

    我在 Ubuntu 16 04 上使用 Matplotlib 2 0 和 Python 3 6 来创建数据图 电脑显示器的分辨率为 4k 分辨率为 3840x2160 绘图数字看起来非常小 字体也很小 我已经尝试过TKAgg and Qt5
  • Qt 5.5 QOpenGLWidget 链接错误未链接任何 openGL 调用

    我尝试使用 Qt 5 5 1 构建一个简单的 OpenGL 应用程序 一切都很好 直到我尝试使用 glClearColor 等 openGL 本机函数调用 该小部件实际上编译并产生黑屏 但在我尝试使用任何 openGL 本机函数后 它甚至不
  • 另一个宏中的 Q_PROPERTY 宏

    如何放置Q PROPERTY另一个宏里面 辅助宏 define SimpleAllinOne member type public void Set member type arg member m member arg member ty
  • 第一个随机数始终小于其余随机数

    我碰巧注意到 在 C 中 使用 std rand 方法调用的第一个随机数大多数时候都明显小于第二个随机数 关于 Qt 实现 第一个几乎总是小几个数量级 qsrand QTime currentTime msec qDebug lt lt q
  • 如何在qt中进行异步文件io?

    我想知道如何在qt中实现异步文件io 这在普通的 qt 中是否可以实现 或者有人需要使用另一个库 例如 libuv 来实现这样的事情 我正在查看 QDataStream 但即使它是一个 流 它也不是非阻塞的 我想一种解决方案是制作一个在内部
  • 获取 QPushButton 在 2D 数组 QPushButton 上的索引

    我有一个二维数组QPushButton 当用户单击按钮时如何获取按钮的索引 例如当用户单击按钮时a 2 3 它会显示 2 3 该示例如下所示 Qt 4 5 使用对象名称 您可以为按钮指定唯一的对象名称 理想情况下 名称应该是有效的 C 标识
  • 在哪里可以找到 QT 5.3.0 命令提示符

    用于学习Qt的书 C gui programming with qt 4 2nd 版 我需要Qt的命令提示符 我已经安装了Qt 5 3 0 creator 5 3 0开源 但不知道它的命令提示符在哪里 有人可以帮助我吗 我认为您正在寻找的是
  • 如何在 QT 中绘制点?

    我正在用 QT 用 C 编写一个应用程序 其中有 n 个点并计算它的凸包 然而 一旦计算出来 我不知道如何绘制点并绘制船体的边界 制作菜单按钮等很简单 但我不确定我是否知道执行此操作的工具 你怎么做到这一点 图形视图 addEllipse
  • 在没有加载器的情况下实例化内联组件

    有没有办法实例化内联Component 即在同一文件中定义 而不使用Loader 我不太关心使用的性能影响Loader因为我要用很多东西污染我的文件Loader包装纸 我发现从 JavaScript 创建动态 QML 对象 http doc
  • 如何让小部件在上下文菜单出现时接收鼠标释放事件

    在Ubuntu20 04上 当上下文菜单出现时 我无法让小部件接收鼠标释放事件 而Windows可以接收 我的pyqt版本是5 15 2 我考虑过手动发送鼠标释放事件 但我不知道当上下文菜单出现时哪些系统会收到鼠标释放事件 这样做可能会导致
  • 清除pyqt中布局中的所有小部件

    有没有办法清除 删除 布局中的所有小部件 self plot layout QtGui QGridLayout self plot layout setGeometry QtCore QRect 200 200 200 200 self r
  • C++ SQL 查询构建库

    我正在寻找一个提供与 c SelectQueryBuilder 库类似功能的 c 库 http www codeproject com Articles 13419 SelectQueryBuilder Building complex a
  • QTableView 并双击一个单元格

    我正在开发测试用例编辑器 该编辑器包含 USART 传输和接收数据包格式 编辑器是一个表格视图 发送和接收数据包的长度为八个字节 例如 0x01 0x02 0x03 0x08 它在我的第五和第六栏中 现在 我希望此列中的单元格为只读 但是当
  • 如何doxygen注释Qt属性?

    我想将 Doxygen 注释附加到我的 Q PROPERTY 例如 song h class Song public QObject Q OBJECT private Q PROPERTY QString title READ title
  • 覆盖 QWebView 中的页面回复

    我试图在 Qt 的 QWebView 中拦截页面 表单请求 并在某些情况下使用替代内容进行响应 QNetworkReply ngcBrowser createRequest Operation operation const QNetwor
  • 连接到 QNetworkReply::error 信号

    我正在使用 Qt5 的新连接语法 QNetworkReply 有一个名为error http qt project org doc qt 5 0 qtnetwork qnetworkreply html error 2还有一个函数叫做err
  • 无法运行 Qt 应用程序:找不到版本“Qt_5”

    我运行 Ubuntu 16 04 LTS 我的问题是我无法运行可以编译的 Qt5 应用程序 这是我尝试运行它时得到的结果 home user Desktop sconfig dist Release GNU Linux SCongif us
  • Qt QML 数据模型似乎不适用于 C++

    我一直在使用中的示例http doc qt digia com 4 7 qdeclarativemodels html http doc qt digia com 4 7 qdeclarativemodels html这是 QML 声明性数
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap

随机推荐

  • vue 动态引入第三方js和css

    页面中经常会用到第三方库的情况 直接全局引入到html文件会造成资源浪费 实现在需要的页面动态加载 动态加载css文件 param url param isCache export function loadCSS url isCache
  • 2021山东省职业院校技能大赛“网络空间安全”赛题及赛题解析(超详细)

    2021年中职组 网络空间安全 赛项 2021年中职组山东省竞赛任务书 模块 A 基础设施设置与安全加固 200分 模块B 网络安全事件响应 数字取证调查和应用安全 400分 模块C CTF夺旗 攻击 200分 模块D CTF夺旗 防御 2
  • QT 图片透明度

    设置图片的透明度 方式一是底部参考文章的内容 方式二是因为取值范围为0 0 1 0 所以在方式一的基础上稍加修改 方式三是 QPainter 自己的透明度设置函数 加载图片 QPixmap m pixmap QPixmap m pixmap
  • CSS学习案例(16):网易云音乐导航栏

    网易云音乐官网点这里 原版 自己做的 网易云logo图标和搜索放大镜图标 在阿里巴巴矢量图标库找 div class container div class top div class content div class logo a hr
  • 如何发送和接收RTP封包的H264,用FFmpeg解码

    这篇文章给大家介绍怎么打包H264分片到RTP包 并且实现一个播放程序演示接收RTP包和用FFmpeg解码 为了让大家更了解H264打包成RTP的细节 有必要罗嗦一下向大家介绍一些相关的基础知识 下面分三节介绍 其中前面两节是基础知识 第三
  • android setWebChromeClient和setWebViewClient的使用区别

    开发中我发现两个控件的使用 由于我做的开发依旧是前期开发 所以功能比较简单 在这里我使用的webView空间一般是使用的如下这个方法 webView setWebViewClient new webViewClient 然后新建一个内部类实
  • c++ 编码转化

    UTF 8到GB2312的转换 char U2G const char utf8 int len MultiByteToWideChar CP UTF8 0 utf8 1 NULL 0 wchar t wstr new wchar t le
  • 软件测试入门第一步【测试用例】

    测试用例 是指对一项特定的软件产品进行测试任务的描述 体现测试方案 方法 技术和策略 内容包括测试目标 测试环境 输入数据 测试步骤 预期结果 测试脚本等 并形成文档 每个具体测试用例都将包括下列详细信息 编制人 审定人 编制日期 版本 用
  • git-自动化脚本

    首先我们要从https github com github 上申请一个GitHub仓库 过程就不介绍了 现在我们来写个git的自动回滚脚本 通过版本号来回滚代码 cat usr local src git sh bin bash autho
  • Kafka日志告警关键字

    在配置Kafka日志告警时 可以关注以下关键字 ERROR 表示发生了错误 需要进一步检查错误消息以确定具体的问题 Exception 表示发生了异常情况 需要进一步检查异常信息以确定具体的问题 Failed 表示操作失败 如消息发送失败
  • Set的常见用法详解(STL)新手入门!!!

    目录 1 2 Set的常见用法详解 1 set的定义 2 set容器内元素的访问 3 set的常见用途 1 2 Set的常见用法详解 前言 set翻译为集合 是内部自动有序且不含重复元素的容器 当需要去除重复元素且可能因为这些元素比价大或者
  • mysql alter语句用法:增加字段、修改字段、删除字段等

    文章目录 1修改表名 修改字段数据类型 修改字段名 增加字段 删除字段 1修改表名 alter table 旧表名 rename 新表名 修改字段数据类型 alter table 表名 modify 属性名 数据类型 要修改的部分 修改为你
  • 每天下午5点使用计算机结束时断开终端的连,在每天下午5点使用计算机结束时断开终端的连接属于()...

    相关题目与解析 在每天下午5点使用计算机结束时断开终端的连接 这种方式属于保护 A 外部终端的物理安全B 通 在每天下午5点使用计算机结束时断开终端的连接属于 对于外部计算机终端的安全管理 以下正确的是 允许在一台主机上同时连接多个终端 各
  • 华为手机计算机删除怎么恢复出厂设置,华为手机恢复出厂设置能彻底清除垃圾吗? 恢复出厂怎么操作...

    1 华为手机恢复出厂设置能不能彻底清除垃圾是根据机主的备份而定的 2 安卓手机恢复出厂设置只能清除手机本机内存中的垃圾 并且会把所有手机上的数据 应用 信息 资料等都会清除的 而在外置内存卡上反而会增加不少不能使用的垃圾文件 3 华为手机恢
  • 揭秘数据探查:引领企业数据治理质量提升,助力业务高速发展!

    在日常工作中 产品 运营 研发及数据分析师常常会发现 处理 加工和识别数据等数据处理工作往往会占用整个工作流程80 的时间 造成这种困境的原因 大致有三点 1 数据量大且混乱 数据质量参差不齐 2 整体概括信息缺乏 度量信息如最大值 最小值
  • 优雅的关闭socket

    http blog sina com cn s blog 4dbcd2730100v5cu html 转载于以上网址 我们在利用IOCP 完成端口 进行程序设计的时候 经常要关闭一些不满足条件的套接字 假如我们直接采用closesocket
  • Vuforia——环境配置

    开发环境 Unity 2021 1 14flc1 Vuforia Engine AR 9 8 8 开发前要注意先配好Git 否则Vuforia插件无法导入 配置Vuforia 2021版本没有内置Vuforia 我也尝试去Asset Sto
  • 原生JS实现评论功能

    利用js的追加 appendChild实现评论
  • Android studio项目目录结构

    Android studio项目目录结构 一 gradle目录 二 idea目录 三 moudle App 目录 1 build目录 2 libs目录 3 src目录 1 AndroidTest 2 Java 3 res A 资源介绍 图片
  • Qt信号槽传递自定义结构体

    1 定义结构体并注册元对象 1 定义结构体 struct Student int m id int m age QString m name 2 注册元对象 Q DECLARE METATYPE Student class MainWind