按钮控件的基类--- 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;大数…

诊断网络卡的原因

首先&#xff0c;通过ipconfig和ping命令来诊断。 手头要有一台Windows电脑。在dos窗口下&#xff0c;输入ipconfig&#xff0c;可以查看到本机“手动设置”或者“自动获取”的IP地址。 这里有几种可能性&#xff1a; IP地址和网关地址都正确。&#xff08;不存在问题&#xf…

stable diffusion实践操作-tagg插件-反推提示词

系列文章目录 本文专门开一节写SD原理相关的内容&#xff0c;在看之前&#xff0c;可以同步关注&#xff1a; stable diffusion实践操作 文章目录 系列文章目录前言一、tagg插件反推词使用1. 安装2. 打开3 发送到文生图4 结果 总结 前言 本章主要讲一个反推提示词的插件tagg.…

【Git】git tag 查看版本号 | 删除本地 | 删除远程仓库| 批量删除

一、删除指定tag 使用场景&#xff1a;比如我们在本地git tag了一个错误的版本号&#xff0c;但是还没有push&#xff0c;想直接删掉避免污染远程仓库 1、删除指令 要删除指定的Git标签&#xff08;版本号&#xff09;&#xff0c;您可以使用以下命令&#xff1a; git tag -d 标…

DockerFile简明教程

需求 由于在测试环境中使用了docker官网的centos 镜像&#xff0c;但是该镜像里面默认没有安装ssh服务&#xff0c;在做测试时又需要开启ssh。所以上网也查了查资料。下面详细的纪录下。在centos 容器内安装ssh后&#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作为底层存储数据的…

Apollo在Java中的使用

本节主要讲解在普通的 Java 项目和 Spring Boot 中如何使用 Apollo。 普通 Java 项目中使用 加入 Apollo Client 的 Maven 依赖&#xff0c;代码如下所示。 <dependency><groupId>com.ctrip.framework.apollo</groupId><artifactId>apollo-client<…

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 连接服务,我们通…

【3】单着色器文件读取

Basic.shader文件&#xff0c;可以发现顶点着色器和片段着色器是写在一个文件里的&#xff0c;这里我们将他们读取出来&#xff0c;而不是上一篇使用string的方式。 #shader vertex #version 330 corelayout(location 0) in vec4 position;void main() {gl_Position positio…

TTransportException SASL authentication not complete

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

概念解析 | 无线智能空口:打造下一代无线通讯网络的关键技术

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:无线智能空口。 无线智能空口:打造下一代无线通讯网络的关键技术 前序 “空口"是无线通信中的一个专业术语,它主要用于描述无线通信设备与设备之间的通信接口。我们可…