按钮控件的基类--- QAbstractButton 类(抽象类)

1、QAbstractButton 属性

QAbstractButton 属性速查表
属性名说明属性名说明
autoExclusive自动排他性checked是否被选中
autoRepeat是否启用自动重复down是否处于按下状态
autoRepeatDelay初始延迟(毫秒)icon按钮上显示的图标
autoRepeatInterval时间间隔(毫秒iconSize显示的图标的大小
checkable是否可选中shortcut获取和设置快捷键
text获取和设置显示的文本

①、 autoExclusive: bool 访问函数:

bool autoExclusive() const;

void setAutoExclusive(bool);
描述了按钮的自动排他性,若启用了该属性,则属于同一父部件的可选中按钮的行为,
就好像是在同一排他性组中的按钮一样。除了单选按钮,默认为关闭。

②、 autoRepeat: bool 访问函数:

bool autoRepeat () const;

void setAutoRepeat(bool);
描述了按钮是否启用自动重复。当按钮处于按下状态(比如按下按钮不放)时,会以固
定间隔发送 pressed(), released(), clicked()信号。默认为关闭。 经测试,自动重复对
默认按钮无效,也就是按下 enter 键时,即使关闭自动重复,默认按钮仍会重复发送
上述信号。

③、 autoRepeatDelay: int 访问函数:

int autoRepeatDelay() const;

void setAutoRepeatDelay(int);
自动重复的初始延迟(毫秒)

④、 autoRepeatInterval: int 访问函数:

int autoRepeatInterval() const;

void setAutoRepeatInterval(int);
自动重复的时间间隔(毫秒)

⑤、 checkable: bool 访问函数:

bool isCheckable() const;

void setCheckable(bool);
按钮是否可选中,默认为可选中
⑥、 checked: bool 访问函数:

bool isChecked() const;

void setChecked(bool)
按钮是否被选中(即是否处于选中状态),只有可选中按钮才能被选中。默认未被选中。
⑦、 down: bool 访问函数:

bool isDown() const;

void setDown(bool);
按钮是否被按下(即是否处于按下状态)。若此属性为 true,则按钮被按下。 若把此属性
设置为 true,则不会发送 pressed()和 clicked()信号(经测试,仍会发送这些信号)。默认
为 false。
⑧、 icon: QIcon 访问函数:

QIcon icon() const;

void setIcon(const QIcon &);
按钮上显示的图标,
⑨、 iconSize: QSize 访问函数:

QSize iconSize() const;

void setIconSize(const QSize);
按钮上显示的图标的大小。默认大小由 GUI 样式定义。这是图标的最大大小,较小
的图标不会被放大。
⑩、 shortcut : QKeySequence
访问函数:

QKeySequence shortcut() const;

void setShortcut(const QKeySequence&);
保存与按钮关联的助记符, QKeySequence 类型见后文
⑪、 text: QString 访问函数:

QString text() const;

void setText(const QString&);
按钮上显示的文本。若按钮没有文本,则 text()返回一个空字符串。

示例 1:按钮的排他性与自动重复
//m.h 文件的内容
#ifndef M_H
#define M_H
#include<QtWidgets>
#include <iostream>
using namespace std;
class B : public QPushButton 
{ Q_OBJECTpublic: B(QString s="",QWidget *p=0):QPushButton(s,p){}//若重写以下事件处理函数,则使用该类创建的按钮,将不会发送 Qt 内置的信号(比如 clicked()等)//void mousePressEvent(QMouseEvent *e){cout<<"D"<<endl;}public slots: //注: qt5.0 之后,可使用普通函数作为槽函数。void f(){ cout<<"F"<<endl; }
};
#endif//m.cpp 文件的内容
#include "m.h"
int main(int argc, char *argv[]){QApplication a(argc,argv);//创建部件QWidget w; B *pb1=new B("AAA",&w); B *pb11=new B("AAA1",&w);QCheckBox *pb2=new QCheckBox("BBB",&w); QCheckBox *pb3=new QCheckBox("CCC",&w);QCheckBox *pb4=new QCheckBox("DDD",&w); QRadioButton *pb5=new QRadioButton("EEE",&w);QRadioButton *pb6=new QRadioButton("FFF",&w); //单选按钮默认具有排他性。QCheckBox *pb7=new QCheckBox("GGG",&w);//布局各部件pb1->move(22,22); pb11->move(99,22);pb2->move(22,77); pb3->move(99,77); pb4->move(155,77);pb5->move(22,122); pb6->move(99,122); pb7->move(155,122);pb1->setAutoRepeat(true); //pb1 开启自动重复pb1->setAutoRepeatDelay(1000); //设置初始延迟为 1 秒pb1->setAutoRepeatInterval(2000); //设置时间间隔为 2 秒//把按钮 pb1 的 clicked 信号与槽 f 关联。QObject::connect(pb1,&QPushButton::released,pb1,&B::f);pb2->setAutoExclusive(true); pb3->setAutoExclusive(true); //开启按钮的排他性pb11->setDown(true); //设置为按下状态pb7->setCheckable(false); //设置为不可选中。w.resize(300,200); w.show(); return a.exec();
}

结果:

二、QAbstractButton 类中的成员函数
①、 QAbstractButton(QWidget *parent=Q_NULLPTR); //构造函数
②、 QButtonGroup* group() const //该函数见后文。
返回此按钮所属的组,若按钮不是任何 QButtonGroup 的成员,则返回 0。
 

三、QAbstractButton 类中的信号
①、 void clicked(bool checked =false);
 以下情形会发送此信号
 鼠标点击按钮然后释放时,注意:按钮释放时才会发送。
 调用 click()或 animateClick()函数时。
 按下对应的快捷键或空格键时。
 当调用 setDown()、 setChecked()或 toggle()函数时,不会发送该信号。
 若按钮是可选中的, 当按钮被选中时, 参数 checked 为 true,若按钮未被选中,
则为 false。
 需要注意的是 QWidget 类并不发送此信号及 pressed 和 released 信号。

②、 void pressed(); 按下按钮时发送此信号
③、 void released(); 释放按钮时发送此信号。
④、 void toggled(bool checked);
 每当可选中按钮切换状态时,都会发送此信号。若按钮被选中,则参数 checked
为 true,若按钮被取消选中,则为 false。
 按钮状态的改变可能是由于用户操作, click()槽函数或 setChecked()函数被调用的
结果。
 在发出信号前,将更新排他性按钮组中按钮的状态

四、QAbstractButton 类中的
①、 void animateClick(int m=100);
执行动画单击:即,立即按下按钮,然后在 m 毫秒之后释放。在释放按钮之前再次调
用此函数,会重新设置计时器。所有与单击有关的信号都会根据情况发出。若该按钮
被禁用,则此功能不起作用。
②、 void click()
此槽接收来自与点击相关的常见信号,若按钮是可选中的,则切换该按钮的状态。若
该按钮被禁用,则此槽函数不起作用。
③、 void toggle(); 切换可选中按钮的状态。
 

示例 2:动画点击与状态切换
//m.h 文件的内容。
#ifndef M_H
#define M_H
#include <QtWidgets>
#include <iostream>
using namespace std;
class B:public QPushButton{ Q_OBJECTpublic: B(QString s="",QWidget *p=0):QPushButton(s,p){}public slots: //注: qt5.0 之后,可使用普通函数作为槽函数。void f(){ cout<<"F"<<endl; }void g(){ animateClick(4000); }//执行动画点击,即按下按钮 4 秒之后,按钮才会被弹起
};
#endif//m.cpp 文件的内容
#include "m.h"
int main(int argc, char *argv[]){QApplication a(argc,argv);//创建部件QWidget w; B *pb1=new B("AAA",&w); B *pb11=new B("AAA1",&w);QCheckBox *pb2=new QCheckBox("BBB",&w);//布局各部件pb1->move(22,22); pb11->move(99,22); pb2->move(22,77);//把各按钮与相应的槽关联。QObject::connect(pb1,&QPushButton::clicked,pb2,&QCheckBox::toggle);QObject::connect(pb2,&QCheckBox::toggled,pb1,&B::f);QObject::connect(pb11,&QPushButton::pressed,pb1,&B::g);w.resize(300,200); w.show(); return a.exec();
}

结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/69079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue + Element UI 前端篇(十二):用户管理模块

Vue Element UI 实现权限管理系统 前端篇&#xff08;十二&#xff09;&#xff1a;用户管理模块 用户管理模块 添加接口 在 http/moduls/user.js 中添加用户管理相关接口。 import axios from ../axios/* * 用户管理模块*/// 保存 export const save (params) > {ret…

windows查看端口占用,通过端口找进程号(查找进程号),通过进程号定位应用名(查找应用)(netstat、tasklist)

文章目录 通过端口号查看进程号netstat通过进程号定位应用程序tasklist 通过端口号查看进程号netstat 在Windows系统中&#xff0c;可以使用 netstat 命令来查看端口的占用情况。以下是具体的步骤&#xff1a; 打开命令提示符&#xff08;CMD&#xff09;&#xff1a;按WinR组…

Linux简介

为什么选择Linux&#xff1f; Linux是一个优秀的操作系统 硬件方面&#xff1a;适合嵌入式&#xff0c;服务器&#xff0c;移动设备&#xff0c;桌面&#xff0c;计算机集群和超级计算机应用方面&#xff1a;人工智能&#xff0c;分布式计算&#xff0c;云计算&#xff0c;大数…

电气工程中重要的测量术语:“kVRMS” | 百能云芯

在电气工程和电子领域&#xff0c;术语“kVRMS”至关重要。它是工程师和技术人员用来准确评估电气系统电压的关键测量方法。在这篇综合文章中&#xff0c;我们将深入探讨 kVRMS 的含义、其意义、应用。 kVRMS 代表“千伏均方根”。为了理解这个术语&#xff0c;我们来分解一下&…

Linux的服务器日志分析及性能调优

作为网络安全和数据传输的重要环节&#xff0c;代理服务器在现代互联网中扮演着至关重要的角色。然而&#xff0c;在高负载情况下&#xff0c;代理服务器可能面临性能瓶颈和效率问题。本文将介绍如何利用Linux系统对代理服务器进行日志分析&#xff0c;并提供一些实用技巧来优化…

rpm打包

文章目录 rpm打包 1. rpm打包步骤0&#xff09;准备工作&#xff1a;安装打包工具rpm-build和rpmdevtools&#xff08;1&#xff09;在线安装&#xff08;2&#xff09;离线安装 1&#xff09;创建初始化目录2&#xff09;准备打包内容3&#xff09;编写打包脚本 spec文件4&…

测试需求分析

什么是软件测试需求&#xff1a; 灰度测试&#xff1a;先发布部分功能&#xff0c;然后看用户的反馈&#xff0c;再去发布另外一部分的更新 A/B测试&#xff1a;先发布的功能先让A部分的用户进行更新&#xff0c;再根据用户的犯困再更新B用户的功能 需求测试&#xff1a; 功…

hive 基础知识

一 hive 是什么 在本节前我们需要明确 hive 是什么 上面两个代码块&#xff0c;左边的是 mapreduce 的代码块&#xff0c;右边的是hive 的代码块 很容易看出来&#xff0c;右边的 hive 写起来要更容易更快些&#xff0c;而执行效率&#xff0c;右边的 hive 只比左边多一个翻译…

Redis 7 第六讲 主从模式(replica)架构篇

🌹🌹🌹 此篇开始进入架构篇范围(❤艸`❤) 理论 即主从复制,master以写为主,Slave以读为主。当master数据变化的时候,自动将新的数据异步同步到其它slave数据库。 使用场景 读写分离 容灾备份数据备份水平扩容主从架构 演示案例 注:masterauth、replicaof主…

直线导轨的替换方法

目前&#xff0c;直线导轨的使用率持续上升&#xff0c;已广泛应用在各种各样的行业中&#xff0c;可替换性高是其广泛使用的重要原因之一&#xff01;直线导轨的替换指的就是导轨和滑块可以单出&#xff0c;不用整套替换。 市面上使用率最高的直线导轨品牌应该就是台湾*银了&a…

优先级队列priority_queue以及仿函数的使用

目录 优先级队列priority_queuepriority_queue的模拟实现仿函数 优先级队列priority_queue 优先级队列priority_queue是一种容器适配器&#xff0c;根据严格的弱排序标准&#xff0c;它默认第一个元素总是它所包含的元素中最大的 优先级队列默认使用vector作为底层存储数据的…

kali 安装cpolar内网穿透实现 ssh 远程连接

文章目录 1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 简单几步通过cpolar 内网穿透软件实现ssh 远程连接kali! 1. 启动kali ssh 服务 默认新安装的kali系统会关闭ssh 连接服务,我们通…

TTransportException SASL authentication not complete

今天遇见了一个异常&#xff0c;但是发现是自己智障了 但还是记录一下 在close的时候先close了conn再close的statement导致报的这个错

Level-based Foraging 多智能体游戏仿真环境

游戏场景测试 参考链接&#xff1a; https://kgithub.com/semitable/lb-foraging

CNN详细讲解

CNN(Convolutional Neural Network) 本文主要来讲解卷积神经网络。所讲解的思路借鉴的是李宏毅老师的课程。 CNN&#xff0c;它是专门被用在影像上的。 Image Classification 我们从影像分类开始说起。 我们举例来说&#xff0c;它固定的输入大小是100*100的解析度&#x…

软件行业25年技术发展史

语言时代 -> 框架时代 -> 分布式架构时代 -> 微服务架构时代 25年开发、管理&#xff0c;11年教培&#xff08;教研总监&#xff09;技术总结&#xff1a; 1997年 VB 1999年 ASPCOM 2004年 C# / JAVA、j2ee、ejb、struts1hibernate 2008年 旧三大框架 Struts2Spr…

MyBatisPlus之DQL编程控制

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 MyBatisPlus之DQL编程控制 一、 条件查询方式&…

zabbix安装部署

前期准备&#xff1a;安装mysql数据库和nginx 一、下载zabbix rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm yum-config-manager --enable rhel-7-server-optional-rpms yum install epel-release numactl yum install…

【LeetCode-面试经典150题-day21】

目录 120.三角形最小路径和 64.最小路径和 63.不同路径Ⅱ 5.最长回文子串 120.三角形最小路径和 题意&#xff1a; 给定一个三角形 triangle &#xff0c;找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标…

JS 实现同时往数组多个位置插入值和删除值

1 start下标实现往固定地方插入数据 const aa [1, 2, 3, 4, 5, 6]; let bb [{ start: 5, list: [b1, b2, b3] },{ start: 0, list: [a1, a2] },{ start: 1, list: [c1, c2] },{ start: 1, list: [c11, c22] },{ start: 2, list: [d1, d2] },{ start: 3, deleteCount: 1 }, …