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

news2024/11/26 7:30:56

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_OBJECT
    public: 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_OBJECT
    public: 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.coloradmin.cn/o/977087.html

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

相关文章

Python图像处理算法实战【1】超详细整理 | 新手入门实用指南 | 图像处理基础

1. 什么是图像 & 图像在计算机中如何存储&#xff1f;2. 图像可分为哪些类型&#xff1f; 2.1. 二值(黑白)图像2.2. 灰度图像2.3. RGB彩色图像2.4. RGBA图像 3. 什么是图像通道&#xff1f;4. 图像处理 4.1. 什么是图像处理&#xff1f;4.2. 图像处理流程4.3. 图像处理技术…

汉诺塔问题(java解析代码版)

此文章只解析代码部分问题&#xff0c;理解汉诺塔&#xff0c;但是不理解代码的可以看一下&#xff0c;希望能帮到各位&#xff0c;如果有什么地方错了&#xff0c;欢迎指正。 不过其实主要还是给自己看的&#xff0c;怕到时候忘记 汉诺游戏规则如下&#xff1a; 1、有三根相…

成集云 | 金蝶云星空即时库存明细同步到多维表格 | 解决方案

源系统成集云目标系统 方案介绍 金蝶云星空是金蝶软件推出的新一代成长型企业SaaS管理软件&#xff0c;基于可组装低代码PaaS平台&#xff0c;构建了财务、供应链、采购管理、销售管理、生产管理、成本、税务、零售、电商、人力资源、协同办公等三十多个领域的一体化企业管理…

使用Android原生制作毛玻璃效果图片

毛玻璃效果&#xff0c;也被称为模糊效果&#xff0c;是许多现代应用中流行的一种视觉效果。在 Android 中&#xff0c;我们可以通过多种方式实现该效果。本文将探讨如何使用 Android 原生的 Bitmap 类和 RenderScript 来实现毛玻璃效果。 1. 准备工作 首先&#xff0c;你需要…

使用maven idea环境

创建模块工程后 idea三种方式执行maven命令 想在哪个工程模块上执行就点开哪一个 如果觉得双击完clean再双击install麻烦&#xff0c;可以 如果有需要还可以给命令后面加参数 ​​​ 第三种&#xff0c;在终端中打开&#xff0c;相当于通过idea进入了命令行 工程导入 导入模块…

Vue + Element UI 前端篇(十一):第三方图标库

Vue Element UI 实现权限管理系统 前端篇&#xff08;十一&#xff09;&#xff1a;第三方图标库 使用第三方图标库 用过Elment的同鞋都知道&#xff0c;Element UI提供的字体图符少之又少&#xff0c;实在是不够用啊&#xff0c;幸好现在有不少丰富的第三方图标库可用&…

JVM性能优化 —— 类加载器,手动实现类的热加载

一、类加载的机制的层次结构 每个编写的”.java”拓展名类文件都存储着需要执行的程序逻辑&#xff0c;这些”.java”文件经过Java编译器编译成拓展名为”.class”的文件&#xff0c;”.class”文件中保存着Java代码经转换后的虚拟机指令&#xff0c;当需要使用某个类时&#…

Redis List类型命令 - Set类型命令 - SortedSet类型命令

目录 List类型 什么是双向链表呢&#xff1f; List类型的特征&#xff1a; List的常用命令 LPUSH和RPUSH的区别&#xff1a; LPOP和RPOP的区别&#xff1a; LPUSH和RPUSH的使用 LPOP和RPOP的使用 LRANGE key star end&#xff1a;返回一段距离范围内所有的元素 BLPOP…

Kotlin(五) 循环语句

目录 For循环 关键字 until step downTo Java中主要有两种循环语句&#xff1a;while循环和for循环。而Kotlin也提供了while循环和for循环&#xff0c;其中while循环不管是在语法还是使用技巧上都和Java中的while循环没有任何区别&#xff0c;因此我们就直接跳过不进行讲解…

winserver 2012 R2 部署记录

记一次winserver2012 R2 环境部署&#xff0c;程序要求 framework4.6.1 安装好之后发现报错&#xff0c;提示运行环境没有 4.6.1 支持&#xff0c;需要安装 于是先装了 chs 版本&#xff0c;发现报错。 再次打开卸载&#xff0c;重新安装enu版本&#xff0c;发现程序正常。

GPT引领前沿热点、AI绘图

GPT对于每个科研人员已经成为不可或缺的辅助工具&#xff0c;不同的研究领域和项目具有不同的需求。如在科研编程、绘图领域&#xff1a; 1、编程建议和示例代码: 无论你使用的编程语言是Python、R、MATLAB还是其他语言&#xff0c;都可以为你提供相关的代码示例。 2、数据可…

ubuntu 22.04 深度学习环境配置

第一步 安装驱动 网址&#xff1a;https://www.nvidia.com/download/index.aspx 根据硬件选择&#xff0c;我这里是 ubuntu 服务器,显卡是v100 sudo su root chmod ax NVIDIA //按 TAB 即可 加运行权限 # 禁用原显卡驱动 vim /etc/modprobe.d/blacklist.conf # 在最后一行…

服装商城小程序制作:打造便捷购物体验和提升销售额的利器

随着移动互联网的发展&#xff0c;服装商城小程序成为各大服装品牌推广销售的重要工具。它不仅能够为用户提供便捷的购物体验&#xff0c;还能帮助服装商城实现更高效的销售和管理。下面给大家介绍下服装商城小程序的优点以及制作流程&#xff0c;让您了解并充分利用这一利器。…

【视觉系统】电容正负极角度机器视觉测量软硬件方案-康耐德智能

电容正负极角度测量  客户的需求  检测内容 电容的正负极角度测量。  检测要求 判断电容的正负极&#xff0c;无精度要求&#xff0c;速度越快越好。  凯瑞斯评估  视觉可行性分析 对贵司的样品进行了光学实验&#xff0c;并进行图像处理&#xff0c;…

数据链路层中多路复用详解

MAC协调节点间信号的传输&#xff0c;经历避免节点间相互干扰 因此出现了两种信道划分方式&#xff0c;分别是&#xff1a;静态划分信道、动态划分信道 一、什么是多路复用 多路复用技术是把多个低速信道合成一个高速信道的技术&#xff0c;使得一条高速的主干链路同时为多条…

STM32 硬件IIC 控制OLED I2C卡死问题

1. STM32L151C8T6 硬件IIC 控制OLED 屏&#xff0c;OLED 驱动IC CH1116G, 查阅OLED 数据手册 2. STM32 硬件IIC 初始化&#xff0c;用的标准库&#xff0c;固件库 // stm32l151c8t6 as master, oled control ic (CH1116G) as slave, and communicate by master iic2 void STM3…

基于FPGA的ECG心电信号峰值检测和心率计算,包括testbench测试文件和ECG数据转换为coe文件程序

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 vivado2019.2 matlab2022a 3.部分核心程序 timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 202…

联想M7600D激光打印机墨粉盒清零方法

粉盒没有墨粉了&#xff0c;加粉后回来安装回打印机里还是会显示请更换墨粉盒&#xff1b;这个时候你就需要将粉盒的计数归一下零&#xff0c;好让机器重新计数&#xff1b;那么怎么清零呢&#xff1f;用什么方法清零呢&#xff1f;在哪里操作呢&#xff1f;下面我就告诉你一个…

Android中的view绘制流程,简单理解

简单理解 Android中的View类代表用户界面中基本的构建块。一个View在屏幕中占据一个矩形区域、并且负责绘制和事件处理。View是所有widgets的基础类&#xff0c;widgets是我们通常用于创建和用户交互的组件&#xff0c;比如按钮、文本输入框等等。子类ViewGroup是所有布局&…

Facebook 广告:如何为移动设备投放广告

图片来源于&#xff1a;SaleSmartly官网 如果您希望目标受众发现并看到您的企业&#xff0c;那么广告是至关重要的&#xff0c;但是哪些是宣传您的品牌的最佳方式呢&#xff1f;当今最常用的平台&#xff08;手机&#xff09;上的广告怎么样&#xff1f;能够回答这些问题很重要…