Qt 第二步 槽与信号(一) 实现点击按钮并弹窗
信号与槽是Qt中的核心,也是Qt的特有的。在Qt中信号与槽的关键字为slots、signals、emit。 具体信号与槽将会在下一节中详细说明,因为担心一些读者在没了解过槽与信号前直接讲述过深导致门槛提高,阅读困难,所以当前这一篇文将在不理解信号与槽的实现原理下,完成点击按钮并弹窗,感受信号与槽的使用。
创建一个Qt Widget项目,双击Forms下的mainwindow.ui,在弹出的UI 设计面板小部件选择区域,拖拽Push Button 至窗体设计面板中:
拖拽完成后的界面如下:
右键 PushButton 选择转到槽:
之后弹出转到槽面板,选择QAstractButton下的clicked():
这时将会跳转至一个方法中:
以上操作使按钮绑定了一个方法,这个方法可以称作为槽,槽则是对信号响应的函数。槽可以使该函数与一个信号关联,信号发射时,槽函数会响应,执行槽函数。 刚刚我们在槽面板下选择的是QAstractButton下的clicked(),那么clicked则是发送的信号。clicked是当该按钮被点击后发送的信号。
综上所述,我们可以得知槽是一个函数,当一个信号发射时,将会执行绑定的槽。
我们可以在该槽函数中编写某些代码检测是否在 PushButton被点击时,该函数将会响应。
我们尝试使用一个弹窗作为槽函数的一个表现。可以在 mainwindow.cpp 文件的头部,引入弹窗的头文件:
#include <QMessageBox>
在槽函数中添加 QMessageBox 弹窗(QMessageBox为弹窗),QMessageBox 的函数原型如下:
static StandardButton QMessageBox::information ( QWidget * parent, const QString & title, const QString & text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton );
- parent:为父部件 类型为 QWidget
- title:为弹窗标题 类型为 QString
- text:为显示内容 类型为 QString
- buttons :为弹窗有一个默认的按钮为OK 如果想显示一个OK和NO可以写为
QMessageBox::Yes | QMessageBox::No
类型为 StandardButton - defaultButton:为默认选中的按钮 NoButton 则为不选中 类型为 StandardButton
有了以上说明,我们可以在槽函数中添加如下代码(直接填入值不需要在参数里面进行赋值):
QMessageBox::information(NULL, "这是标题", "@1_bit", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
以上代码服部件为NULL,标题值为“这是标题”,内容为“@_bit”,弹窗有2个按钮,一个是Yes一个是No,默认选中Yes。
点击运行查看效果:
可能读者在设置显示值时会出现编码问题,导致显示某些值错误,在后面的章节将会说明。 完整代码截图如下,紫色框选区域为我添加的代码:
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- linux centos 查看cpu是否开启超线程虚拟化和配置信息
- DDD领域驱动设计实战(三)- 理解实体
- 如何理解 Go 中的反射
- Kubernetes 1.19.0——网络
- 如何用VSCode实现一个vue.js项目?
- 网页轮播图案例
- leetcode栈之用队列实现栈
- 3分钟短文:无私分享!Laravel模型使用2个小技巧
- 抖音小程序基础之 如何绑定点击事件(教程含源码)
- 抖音小程序基础之 如何使用内联样式 style和class(教程含源码)
- 抖音小程序基础之 如何使用选择器class id element (教程含源码)
- 3分钟短文:Laravel模型作用域,为你“节省”更多代码
- Pytorch 0.4.0版本保存的模型在高版本调用问题的解决方式
- Qt音视频开发27-Onvif设备搜索
- 容器化 FRP 使用方案