【笔记】Qt 按钮控件介绍(QPushButton,QCheckBox,QToolButton)

文章目录

      • QAbstractButton 抽象类(父类)
        • QAbstractButton 类中的属性
        • QAbstractButton 类中的函数
        • QAbstractButton 类中的信号
        • QAbstractButton 类中的槽
      • QPushButton 类(标准按钮)
        • QPushButton 类中的属性
        • QPushButton 类中的函数、槽
      • QCheckBox 类(复选按钮)
        • QCheckBox 类的属性
        • QCheckBox 类的函数,信号
      • QToolButton 类(工具按钮)
        • QToolButton 类中的属性
        • QToolButton 类中的函数

QAbstractButton 抽象类(父类)

QAbstractButton 是个抽象类,该类是标准按钮 QPushButton、复选按钮 QCheckBox、单选
按钮 QRadioButton、工具按钮 QToolButton 的父类,该类描述了按钮的一些共同功能,比
如单击按钮发出的信号,按钮的状态等

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

  • autoRepeat:bool 访问函数:bool autoRepeat () const; void setAutoRepeat(bool);
    描述了按钮是否启用自动重复。当按钮处于按下状态(比如按下按钮不放)时,会以固
    定间隔发送 pressed(),released(),clicked()信号。默认为关闭。

  • 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&);
    保存与按钮关联的助记符,快捷键。

  • text:QString 访问函数:QString text()const; void setTex t(const QString&);
    按钮上显示的文本。若按钮没有文本,则 text()返回一个空字符串。

  • 示例:按钮的排他性与自动重复

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() { qDebug() << "F"; }
};
int main(int a, char *b[])
{
    QApplication c(a, b);
    // myWidget w;
    // w.show();

    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 c.exec();
}
QAbstractButton 类中的函数
  • QAbstractButton(QWidget *parent=Q_NULLPTR); //构造函数
  • QButtonGroup* group() const
    返回此按钮所属的组,若按钮不是任何 QButtonGroup 的成员,则返回 0。
QAbstractButton 类中的信号
  1. void clicked(bool checked =false)
  • 以下情形会发送此信号
    • 鼠标点击按钮然后释放时,注意:按钮释放时才会发送。
    • 调用 click()或 animateClick()函数时。
    • 按下对应的快捷键或空格键时
    • 当调用 setDown()、setChecked()或 toggle()函数时,不会发送该信号
    • 若按钮是可选中的,当按钮被选中时,参数 checked 为 true,若按钮未被选中,则为 false
    • 需要注意的是 QWidget 类并不发送此信号及 pressed 和 released 信号
  1. void pressed(); 按下按钮时发送此信号
  2. void released(); 释放按钮时发送此信号
  3. void toggled(bool checked);
  • 每当可选中按钮切换状态时,都会发送此信号。若按钮被选中,则参数 checked
    为 true,若按钮被取消选中,则为 false。
  • 按钮状态的改变可能是由于用户操作,click()槽函数或 setChecked()函数被调用的
    结果。
  • 在发出信号前,将更新排他性按钮组中按钮的状态
QAbstractButton 类中的槽
  1. void checkStateSet()
    当使用 setChecked()时,会调用此虚函数,除非它是在 nextCheckState()中调用的。它
    允许子类重置其中间按钮状态。
  2. bool hitButton(const QPoint &pos) const;
    若 pos 位于可单击按钮的矩形内,则返回 true,否则返回 false。可单击区域默认是整
    个部件,子类可重新实现此函数,以提供对不同形状和大小的可单击区域的支持。
  3. void nextCheckState()
    当按钮被单击时,调用此虚函数,该函数允许子类实现中间按钮状态。
  4. void paintEvent(QPaintEvent* e)=0;
    这是个纯虚函数,子类必须重新实现该函数。

QPushButton 类(标准按钮)

在这里插入图片描述

QPushButton 类中的属性
  • autoDefault:bool 访问函数:bool autoDefault() const; void setAutoDefault(bool);
    若此属性为 true,则此按钮是一个自动默认按钮。若按钮的父部件是 QDialog,则此
    属性的默认值为 true,否则为 false。
  • default:bool 访问函数:bool isDefault() const; void setDefault(bool);
    此属性描述了是否为默认按钮。默认为 false。
  • flat:bool 访问函数:bool isFlat() const; void setFlat(bool);
    此属性描述了是否提高按钮的边框。若此属性为 true,大多数样式不会绘制按钮的背景,
    除非按下按钮。也就是说,若该属性为 true,在通常情况下,若不按下按钮,则该按钮
    看起来就像一个标签一样,是平的。
QPushButton 类中的函数、槽
  • QPushButton (QWidget* parent = Q_NULLPTR);//构造函数
    QPushButton (const QString &text , QWidget* parent = Q_NULLPTR)
    QPushButton (const QIcon &icon , const QString &text , QWidget* parent = Q_NULLPTR)
  • QMenu* menu() const;
    返回与此按钮相关的弹出菜单,若未设置弹出菜单,则返回 0。菜单详见相关章节
  • void setMenu (QMenu * menu);
    将弹出菜单 menu 与按钮关联,这会使按钮成为菜单按钮。
  • void showMenu(); //槽
    显示(弹出)与此按钮相关联的弹出菜单,若没有菜单,则什么也不做。在用户关闭弹
    出菜单之前,该函数不会返回。

QCheckBox 类(复选按钮)

在这里插入图片描述

QCheckBox 类的属性
  • tristate:bool 访问函数:bool isTristate() const; void setTristate(bool y=true);
    该属性保存复选按钮是否为三态按钮,默认为 false。注意:属性的设置函数 setTristate
    只能设置此按钮具有三态按钮的形式,但不能使该按钮呈现出第三种状态,即按钮前
    面的小方框内不会有小黑方框的填充,但点击该按钮,会在三种状态间变换。设置按
    钮的状态应使用下面介绍的成员函数 setCheckState()。
QCheckBox 类的函数,信号
  • QCheckBox(QWidget* parent = Q_NULLPTR); //构造函数
    QCheckBox(const QString &text , QWidget* parent = Q_NULLPTR);
  • Qt::CheckState checkState() const; //返回复选框的选中状态。
  • void setCheckState(Qt::CheckState state);
    设置复选按钮的状态为 state ,该函数可设置复选按钮的三种状态,
    QAbstractButton::setChecked()只能设置两种状态。
    Qt::CheckState 枚举(无标志)
枚举成员说明
Qt::Unchecked0未选中
Qt::PartiallyChecked1部分被选中,项目中的子项目被选中(非全部),则项目就是部分状态
Qt::Checked2选中
  • void stateChanged(int state); //信号
    当复选按钮的状态发生变化时发送该信号。若复选按钮具有三态形式,则按钮会在“选
    中、未选中、部分选中”三种状态间变化,只要这三种状态变化都会发送该信号,但
    QAbstractButton::toggled()信号在三种状态间变化时,则不一定会发送。

QToolButton 类(工具按钮)

在这里插入图片描述

QToolButton 类中的属性

arrowType:Qt::ArrowType
访问函数:Qt::ArrowType arrowType() const;void setArrowType(Qt::ArrowType type);
此属性描述了是否显示一个箭头作为工具按钮的图标,默认为 Qt::NoArrow
autoRaise:bool
访问函数:bool autoRaise() const; void setAutoRaise(bool enable);
此属性描述了是否启用自动提升,默认为禁用(即为 false)。
popupMode:ToolButtonPopupMode
访问函数:ToolButtonPopupMode popupMode() const;
void setPopupMode(ToolButtonPopupMode mode);
此属性描述了弹出菜单的使用方式,默认为 QToolButton::DelayedPopup

枚举成员说明
QToolButton::DelayedPopup0按住工具按钮一段时间后显示菜单超时时间取决于样式
QToolButton::MenuButtonPopup1显示一个特殊的箭头,表示该工具按钮存在菜单,按下箭头时,会显示菜单
QToolButton::InstantPopup2按下工具按钮时,立即显示菜单。在此模式下,按钮本身的 action 不会被触发

toolButtonStyle:Qt::ToolButtonStyle
访问函数:Qt::ToolButtonStyle toolButtonStyle() const;
void setToolButtonStyle(Qt::ToolButtonStyle style); //槽
此属性描述了工具按钮图标和文本的显示方式,即仅显示文本、图标、还是图标和文本一起显示。 默认为 Qt::ToolButtonIconOnly (即仅显示图标)
QToolButton会自动把setToolButtonStyle()槽函数连接到QMainWindow中的相关信号。

QToolButton 类中的函数

QToolButton(QWidget* parent = Q_NULLPTR);
构造函数,需要注意的是,不能通过构造函数为工具按钮设置文本和图标。
QAction* defaultAction() const; //返回默认 QAction
QMenu* menu() const; //返回与此按钮关联的菜单,若没有菜单则返回 0。
void setDefaultAction(QAction* action) //槽
设置默认动作(action)为 action,若该按钮具有默认动作,则 action 定义按钮的属性,比如文本、图标等。
void setMenu(QMenu* menu); 设置与该按钮相关联的菜单,菜单的所有权不会传递到该按钮。
void showMenu() //槽
显示(弹出)与此按钮相关联的弹出式菜单,若没有这样的菜单,则什么也不做,在用户关闭该菜单之前,此函数不会返回。
void triggered(QAction * action) //信号
当触发给定的动作 action 时,发送此信号。该操作还可以与用户界面的其他部分相关联,比如菜单项、键盘快捷键等,以这种方式共享动作,可使用户界面操作更一致。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【全部更新完毕】2024电工杯A题数学建模详细思路代码文章分享

A 题&#xff1a;园区微电网风光储协调优化配置 摘要 在全球范围内&#xff0c;气候变化和环境污染问题日益严重&#xff0c;减少碳排放和实现可持续发展成为各国的共同目标。新能源&#xff0c;尤其是风能和光伏发电&#xff0c;因其清洁、可再生的特性&#xff0c;正在全球范…

国产化服务器设计 原理图:905-多路PCIe的阵列计算全国产化服务器

多路PCIe的阵列计算全国产化服务器 多路PCIe的阵列计算全国产化服务器以国产化处理器&#xff08;海光、飞腾ARM、算能RSIC V&#xff09;为主板&#xff0c;扩展6-8路PCIe3.0X4计算卡&#xff1b; 计算卡为全国产化的AI处理卡&#xff08;瑞星微ARM&#xff0c;算能AI&#x…

C++语言学习(五)—— 类与对象(一)

目录 一、类类型的定义 二、类成员的访问控制 2.1 什么是"类内"和"类外" 2.2 对于访问控制属性的说明 三、类类型的使用 3.1 进行抽象 3.2 声明类 3.3 实现类 3.4 使用类 四、构造函数的引入 五、析构函数的引入 六、重载构造函数的引入 6.1 …

权限维持--windows

隐藏文件 ①文件属性隐藏 如何排查&#xff1a; 使用dir命令无法看到有特殊属性的文件需使用/a ②真隐藏 相当于给原本的文件增加系统文件属性、存档文件属性、只读文集属性、隐藏文件属性 如何排查&#xff1a; 取消受保护的操作系统文件 ③利用ADS隐藏 使用数据流 echo &…

我把PostgreSQL最核心的插件撸干净了!!!

作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复&#xff0c; 安装迁移&#xff0c;性能优化、故障…

USB抓包工具:bushound安装及使用

一、环境搭建 下载busbound6.01安装包&#xff0c;安装完成&#xff0c;重启电脑。 二、工具配置 按照下图配置工具&#xff1a; 使能自动识别新设备 2. 设置抓取数据的容量 三、抓包 回到capture选项卡&#xff0c;在页面的右下角有个run的按钮&#xff0c;点击使能&…

Multi-Attention Transformer for Naturalistic Driving Action Recognition

标题&#xff1a;用于自然驾驶行为识别的多注意力Transformer 源文链接&#xff1a;https://openaccess.thecvf.com/content/CVPR2023W/AICity/papers/Dong_Multi-Attention_Transformer_for_Naturalistic_Driving_Action_Recognition_CVPRW_2023_paper.pdfhttps://openaccess…

快速幂算法6

eg: n10&#xff0c;10%20, 10/25, 5%21,4* 5/22, 2%20,4*256 0/20, 1024 递归算法 #include<iostream> using namespace std; long long quick_pow(int b,int e) {if(b0)return 0;if(e0)return 1;if(e%20){int tempquick_pow(b,e/2);return temp*temp;}if(e%2!0)…

MATLAB modem.qammod和randint函数

实在是受不了MATLAB改函数了 试图找到如何修改代码&#xff0c;诶嘿&#xff0c;失败了&#xff0c;那我就自己写一下吧 randint函数 %% P pre-MMSE clear all;clc % 参数设置 N_frame 100; %帧数 N_packet 1000; % 分组数 b 2; % 每符号比特数 M 2 ^ b; % 调制阶数 mod…

Flutter笔记:Widgets Easier组件库-使用隐私守卫

Flutter笔记 Widgets Easier组件库&#xff1a;使用隐私守卫 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https:…

local dimming(局部调光)介绍

文章目录 1. 什么是local dimming2. 工作原理3. 类型4. 优点5. 缺点和局限7. 技术发展趋势 1. 什么是local dimming local dimming&#xff08;局部调光&#xff09;是电视和显示器中用于提升画面对比度和画质的背光技术。其基本原理是将背光源&#xff08;通常是LED&#xff…

【3dmax笔记】001:3dmax2020下载及安装教程

一、3dmax2020安装教程 1、双击运行exe文件&#xff0c;提取安装程序到指定文件夹&#xff1b; 2、提取完成&#xff0c;安装程序启动&#xff0c;点击安装 3、点击接受许可协议&#xff1b; 4、设置安装位置&#xff0c;点击安装&#xff1b; 5、等待产品安装&#xff1b; 6、…

C++:vector基础讲解

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习《C&#xff1a;vector基础讲解》&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 如果本篇文章对你有帮助&#xff0c;还请各位点点赞&#xff01;&#…

【C++】牛客——OR64 求和

✨题目链接&#xff1a; OR64 求和 ✨题目描述 输入两个整数 n 和 m&#xff0c;从数列1&#xff0c;2&#xff0c;3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来 ✨输入描述: 每个测试输入包含2个整数,n和m ✨输出描述: 按每个组合的字典序排列…

如何使用 CapSolver 扩展找到 Google reCAPTCHA 站点密钥?

网站安全性在当今至关重要&#xff0c;Google reCAPTCHA 作为防止垃圾邮件和滥用行为的前线防御系统起着关键作用。reCAPTCHA 站点密钥是确保网站交互由人类驱动的唯一标识符。了解如何找到这个密钥对于网站管理员和开发人员来说至关重要。 什么是 reCAPTCHA 站点密钥 reCAPT…

做抖音小店需要清楚的5个核心点!

大家好&#xff0c;我是喷火龙。 不管你是在做抖音小店&#xff0c;还是在做其他的电商平台&#xff0c;如果已经做了一段时间了&#xff0c;但还是没有拿到什么结果&#xff0c;我所指的结果不是什么大结果&#xff0c;而是连温饱都解决不了&#xff0c;甚至说还在亏钱。 有…

翻转列表-力扣

题目 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例 3&#xff1a; …

鸿蒙开发配置官方地图

一共需要配置 p12 p7b cer csr 四个文件 p12文件配置 注意创建文件名必须是.p12 到AGC创建项目 AppGallery Connect 添加自己的项目名称 我没有开启 暂时不需要 看个人需求 下载刚创建的cer证书 回到我的项目中 点击刚创建的项目 点击这里 四个文件齐全了 "metadata&qu…

【数据结构】哈夫曼树和哈夫曼编码

一、哈夫曼树 1.1 哈夫曼树的概念 给定一个序列&#xff0c;将序列中的所有元素作为叶子节点构建一棵二叉树&#xff0c;并使这棵树的带权路径长度最小&#xff0c;那么我们就得到了一棵哈夫曼树&#xff08;又称最优二叉树&#xff09; 接下来是名词解释&#xff1a; 权&a…

吉林大学软件工程易错题

1.【单选题】软件工程方法是&#xff08; &#xff09;。 A、为开发软件提供技术上的解决方法 &#xff08;软件工程方法 &#xff09; B、为支持软件开发、维护、管理而研制的计算机程序系统&#xff08;软件工程工具&#xff09; …