QT+机制之信号与槽(自定义带参数的信号)

2023-10-30

关于QT信号与槽的问题其实每个初学QT的人都会遇到,当时我需要做一个带界面的demo,在信号和槽的问题上,我需要的想法是让槽可以有参数的进行操作,但是系统内置的clicked()信号是不含参数的,这对当时根本没接触过QT的我来说就很没头绪,无奈之下只好选择了使用全局变量这个下下策,还好我的demo代码量呀不是很大。我当时是借了一本QT CREATOR快速入门,虽说是好书,但是也很难静得下心来看,于是选择在网上翻阅资料将信号与槽这一部分内容给初步整理了下,得出自己的见解。
QT的作用是做出一个可视化的交互见面,这一点跟中学学的VB很像,当然两者的能力就天差地别了。在QT中,通过控件来实现需求。这里我用最简单的按钮QPushButton和输入框QLineEdit作演示,希望这篇博客能让你对信号和槽有个印象。
为了尽量简洁的说明信号问题,在创建QT项目时选择基类为Widget,不勾选界面。
首先,在QT帮助文档里是有内置的SIGNAL和SLOT的,在SIGNAL中有一个clicked信号,默认参数bool。这里我们需要新建一个按钮,同时定义一个槽函数(槽函数即接收到信号时所做出的行为)。

 	QPushButton *b2=new QPushButton(this);
    b2->move(50,50);
    b2->setText("Send Signal");
    edit=new QLineEdit(this);
     edit->setText("Ready to recv");//edit定义在类中,之后要用到
    connect(b2,&QPushButton::clicked,this,&Signal::MySlot);

因为需要用到类QPushbutton,故需包含相应的头文件,这边着重讲解connect函数。
connect函数用于将信号的发出者和信号的处理者联系起来,第一第三个参数分别为发出者和接收者,注意为指针类型,this为对象的指针,这一点和C++语法一样。第二参数为信号,第四参数为槽函数,均可自定义。这里clicked为系统内置信号,在b2接收到clicked(鼠标点击信号)后,对象(此处为主窗口)作出MySlot反应,MySlot为我定义的一个槽函数。也就是说,此时我按下b2按钮,窗口会运行MySlot函数。
在理解以上内容的基础上,下面将介绍重点,即自定义信号,编写带函数参数的槽函数:

signals:
    void mySignal(QLineEdit*,int );
private slots:
    void MySlot();
    void MyDel(QLineEdit *edit,int x);

上述为在头文件中,注意在定义信号时要在前面加上signals ,且信号和槽的返回值均为void,此时我定义了一个信号,它将传递一个QLineEdit*型参数和一个int型参数

void Signal::MySlot()
{
    emit mySignal(edit,5);
}
void Signal::MyDel(QLineEdit *edit,int x)
{
   edit->setText("The Num is "+QString::number(x));
}

自定义槽函数MySlot(),此槽函数仅仅用于发送之前定义的带参数的信号mySignal(),之前此槽函数与按钮b2的clicked信号已经connect过,故点击b2,将发送信号mySignal(edit,5);

     connect(this,&Signal::mySignal,this,&Signal::MyDel);

connet 此自定义的信号和槽函数MyDel(QLineEdit *edit,int x),接受到此信号是,操作MyDel,用于给edit设置文本属性。
下面附上效果图按下按钮前
在这里插入图片描述

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

QT+机制之信号与槽(自定义带参数的信号) 的相关文章

  • 删除 QComboBox“下拉”动画

    我正在使用 Qt 4 8 并且想在单击 QComboBox 时摆脱 下拉 动画 我也想稍微移动一下 到目前为止 我一直在考虑重新实现 showPopup 和 hidePopup 但不知道如何使其工作 此外 每次我尝试使用 CSS 进行移动或
  • Qt 信号槽,新符号中的转换类型[重复]

    这个问题在这里已经有答案了 鉴于以下两个 connect ui gt comboBox SIGNAL activated QString ps SLOT requestPlotsAvailable QString connect ui gt
  • 如何在Qt中设置编译器?

    我对 Qt 完全陌生 我下载了离线版本 Qt 5 3 2 for Windows 64 bit VS 2013 OpenGL 573 MB 我无法编译我的项目 I have Qt Creator 3 2 1 开源 基于Qt 5 3 2 MS
  • 我的 QSqlQueryModel 不在列表视图中显示数据

    我正在玩 QSqlQueryModel 但我现在完全陷入困境 我一整天都在寻找解决方案 但到目前为止还没有运气 我所做的工作是它从我的 sqlite 数据库中提取数据 但由于某种原因我无法在列表视图中显示它 我的角色名似乎不存在 对于我从数
  • 对齐坐标系

    Let s say I have 2 coordinate systems as it is shown in image attached 如何对齐这个坐标系 我知道我需要将第二个坐标系围绕 X 平移 180 度 然后将其平移到第一个坐标
  • QToolBar 的菜单延迟

    我通过制作 QAction 并向其添加 QMenu 在 QToolBar 上有一个菜单 如何消除单击图标时出现菜单之前的延迟 QToolBar myToolBar new QToolBar this QAction myAction new
  • 如何恢复 QSS 属性的默认系统值?

    如果父级之一将其样式表设置为 Qt QSS 会传播给子级color red 它的所有子级都将应用此样式表 如果你明确设置QLabel color red 那么只有 QLabel 子项会受到关注 如果子项设置自己的值 则可以覆盖子项的样式表c
  • QT 中只获取文件而不获取目录?

    当我这样做时 QDir myDir home some location QStringList filesList myDir entryList 它返回该位置内的文件和目录 但我只想要文件 并且这些文件可以具有任意扩展名 有任何想法吗
  • Qt 支持在 QIcon 中为 SVG 着色

    看来 Qt 不支持 SVG 中路径标签上的描边 填充选项
  • 为什么下面的重叠比较总是评估为 true

    我不明白为什么以下代码有警告 指出重叠比较始终评估为真 接下来的语句永远不会被执行 QVariant MainModel data const QModelIndex index int role const if index isVali
  • 如何在 Qt-Embedded 中(正确)输出多语言文本?

    我的目标系统是 linux 3 3 7 Qt Embedded 开源版 4 8 Droid 字体 取自 fonts droid 20111207 git 1 all deb Debian 软件包并复制到 usr lib fonts目录 主要
  • 如何在按下托盘图标菜单操作时执行功能?

    int main int argc char argv QApplication oApp argc argv QAction action1 QMenu menu QSystemTrayIcon TrayIcon QIcon favico
  • Qt中如何获取鼠标在屏幕上的位置?

    我想获取屏幕上的鼠标坐标 我怎样才能在 Qt 中做到这一点 在 Windows 上 使用 C 我正在做类似答案中建议的事情对于这个问题 https stackoverflow com q 11737665 1420197 正如文档所述 QC
  • Qt 创建者 + MITK (Linux)

    我正在尝试使用MITK 与 Qt Creator 我已经通过 ccmake 成功编译并使用了 VTK 和 ITK 我已经编译了 MITK超级建造模式 它下载 CTK VTK ITK 等 然后我就配置好了 我已经用 make 编译了 大约两个
  • QTextEdit.find() 在 Python 中不起作用

    演示问题的简单代码 usr bin env python import sys from PyQt4 QtCore import QObject SIGNAL from PyQt4 QtGui import QApplication QTe
  • 如何在模型更改时停止ListView“跳跃”

    我需要做什么 我需要创建一个聊天窗口用一个ListView在 QML 中存储聊天消息 我设置listView positionViewAtEnd 以便跟踪最后的消息 我禁用positionViewAtEnd当我向上滚动时 我可以阅读过去的消
  • 禁用 QML Slider 的鼠标滚轮

    我希望能够滚动Flickable使用鼠标滚轮 或触摸板上的两根手指 不改变Sliders它可能包含 示例代码及结果应用 import QtQuick 2 7 import QtQuick Window 2 2 import QtQuick
  • 如何使用 Qtimer 添加 1 秒延迟

    我目前有一个方法如下 void SomeMethod int a Delay for one sec timer gt start 1000 After one sec SomeOtherFunction a 这个方法实际上是一个附加到信号
  • 如何在 Qt 中以编程方式制作一条水平线

    我想弄清楚如何在 Qt 中制作一条水平线 这很容易在设计器中创建 但我想以编程方式创建一个 我已经做了一些谷歌搜索并查看了 ui 文件中的 xml 但无法弄清楚任何内容 ui 文件中的 xml 如下所示
  • 退出 Qt 程序的正确方法?

    我应该如何退出 Qt 程序 例如在加载数据文件时 发现文件损坏 并且用户需要退出该应用程序或重新启动数据文件 我是不是该 call exit EXIT FAILURE call QApplication quit call QCoreApp

随机推荐

  • vue3.0中全局注册组件版本1-官方

    前言 在对vue3 0的使用和学习中 发现了很多和以前不一样的方法 这里聊一聊vue3 0中给我们提供的全局的注册组件方法 官方文档 入口 目录 具体方法介绍 1 前提 返回一个提供应用上下文的应用实例 应用实例挂载的整个组件树共享同一个上
  • iOS字典转成JSON换行符问题

    问题 使用系统框架将字典转成压缩转义后的JSON字符串 发现字符串中带有多个换行符 系统转JSON的方法如下 let json try JSONSerialization jsonObject with validData options
  • 嵌入式开发笔记—关于>>和<<、&和&&和指针

    1 gt gt 和 lt lt 符号 gt gt 可以理解为除以2的几次方 例如a gt gt b相当于a除以2 b 相反 符号 lt lt 可以理解为乘2的几次方 上面描述的只是它们的数字意义 实际上 gt gt 为右移运算符 其运算规则
  • 架构师之我见

    架构师是一个项目组的灵魂人物 他决定着整个系统的技术选型 整体架构以及模块划分 同时还可能担当与领导层的沟通角色 从某种意义上来说 架构师在很大程度上决定着项目的成败与否 正所谓火车跑得快 全靠车头带 很多优秀的架构师都是从一个优秀的开发人
  • C模拟C++静态断言

    百度百科 C 11新特性 静态断言 Static assertions Static assert 在解释 if 和 error 之后被处理 简单的说就是检测代码 不可能 事件的发生 如果真的发生了 在编译期间编译器会报错 表示代码的逻辑存
  • vector数组最大、小值及所在坐标

    在普通数组中 例 a 1 2 3 4 5 6 int maxValue max element a a 6 最大值 int minValue min element a a 6 最小值 int maxPosition max element
  • 学创客机器人编程材料费贵吗_创客教育只是学编程、机器人和3D打印?

    创客 Mak er 创 指创造 客 指从事某种活动的人 创客 本指勇于创新 努力将自己的创意变为现实的人 这个词译自英文单词 Mak er 源于美国麻省理工学院微观装配实验室的实验课题 此课题以创新为理念 以客户为中心 以个人设计 个人制造
  • cavans 详解

    Canvas Color Styles Shadows 属性 fillStyle 设置或者返回填充的颜色 渐进色 strokeStyle 设置或者返回描边的颜色 渐进色 shadowColor 设置或者返回shadows的颜色 shadow
  • KEIL MDK中 warning: #223-D: function "xxx" declared implicitly 解决方法

    今天在EINT的范例里添加了一个函数 即eint c中添加了一个datawrite 的函数 并在主函数main c中调用 编译便警告 warning 223 D function datawrite declared implicitly
  • 详解Shiro认证流程

    详解Shiro认证流程 isAccessAllowed Subject在如何得到 resolveSession doCreateSubject save Subject subject isAuthenticated onAccessDen
  • EditText TextWatch监听简单使用

    TextWatch 接口方法如下 方法执行顺序 beforeTextChanged gt onTextChanged gt afterTextChanged new TextWatcher This method is called to
  • vue 用户列表,请求接口中数据并渲染页面,分页

    参考 vue电商项目实战 哔哩哔哩 bilibili 用户列表 渲染数据 一般数据 1 接口请求数据格式 get方式 传入参数 page rows 2 初始化定义变量 3 联调接口 1 created 2 methods 发送请求 3 接口
  • VulnHub--Me-and-My-Girlfriend-1

    背景 有两个恋人 即Alice和Bob 这对夫妻本来很浪漫 但是自从Alice在一家私人公司 Ceban Corp 工作以来 爱丽丝对鲍勃的态度发生了一些变化是 隐藏 的 而鲍勃 Bob 寻求您的帮助 以获取爱丽丝 Alice 隐藏的内容并
  • MongoDB用户管理授权

    文章目录 1 角色类型 2 注意事项 3 给单个数据库授权 4 给一个用户授权多个数据库 5 其它命令 1 角色类型 数据库用户角色 read readWrite 数据库管理角色 dbAdmin dbOwner userAdmin 集群管理
  • python监控mysql连接数 批量杀进程 解决too many connections问题

    线上django服务偶尔会因为机器访问mysql过多 造成too many connections 问题 导致服务挂掉 之前调大了最大连接数 有点治标不治本 所以今天抽空写个监控mysql连接数的服务 如果连接数超过某个阈值 就杀掉一部分连
  • Linux防火墙未关闭踩的坑—— No route to host

    网络服务很多时候和Linux防火墙都有着很多的关系 经常因为没有关闭Linux防火墙而导致一些奇葩问题的出现 现有两台服务器 S1 和 S2 在 S1 上部署程序 P1 在 S2 上部署 P2 发现 P1 P2 连接报错 日志只有很简单的
  • springcloud 笔记

    提示 本学习笔记是参照尚硅谷视频写的 视频地址 文章目录 第一章 Spring Cloud简介 1 1 什么是SpringCloud 第二章 学习大纲 第三章 SpringCloud和SpringBoot之间的依赖关系如何看 第四章 关于C
  • AI翻译思路引导

    1 基于规则的机器方法 既存储字典和规则沟通 2 基于实例的机器方法 片段化存储的实例 进行组合 数据库一般分词 词汇信息 句法分析 3 基于统计的方法 单词 短语 翻译结果汇总
  • web前端面试总结

    前端面试总结 写React Vue项目时为什么要在列表组件中写Key 其作用是什么 key是给每个vnode的唯一ID 依靠key可以更准确 更快的拿到oldVnode中对应的vnode节点 更准确 因为带key就不是就地复用了 在same
  • QT+机制之信号与槽(自定义带参数的信号)

    关于QT信号与槽的问题其实每个初学QT的人都会遇到 当时我需要做一个带界面的demo 在信号和槽的问题上 我需要的想法是让槽可以有参数的进行操作 但是系统内置的clicked 信号是不含参数的 这对当时根本没接触过QT的我来说就很没头绪 无