【笔记】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.rhkb.cn/news/330443.html

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

相关文章

活动回顾 |观测云在杭州论坛上闪耀:教育创新与技术领导力的双重荣耀

第二届服务韧性工程论坛在杭州顺利闭幕&#xff0c;观测云以其在可观测性领域的杰出成就和创新成果&#xff0c;成为了论坛的瞩目焦点。在此次以“人工智能驱动运维研发革命&#xff0c;SRE 助力出海企业构建健壮的 IT 生态系统”为主题的盛会上&#xff0c;观测云积极参与了四…

基于springboot+vue+Mysql的校园台球厅人员与设备管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

抖音小店无货源怎么做?从开店到发货,最全教程来了!

哈喽~我是电商月月 近几年&#xff0c;抖音的发展如火如荼&#xff0c;抖音小店也吸引了大批新手商家入驻 那抖音小店具体流程到底怎么做&#xff1f;无货源的商家去哪找货&#xff1f;怎么上架&#xff0c;如何推流? 不知道&#xff1f; 今天我就给大家讲一下抖音小店从开…

blender 烘焙渲染图片,已经导出fbx,导出贴图。插件生成图片

1.新建一个模型。选择资产浏览器的材质&#xff0c;并拖动到模型身上&#xff0c;如下图。资产浏览器的材质可以网上找。 2.打开着色器面板。正下方着色器窗口中&#xff0c;点击空白取消选择&#xff0c;然后右击-添加-着色器-原理化BSDF&#xff0c;右击-添加-纹理-图像纹理。…

新品:LoRa扩频调制SOC无线模块-内置ARM、工业级晶振

LoRa-STM32WLE5是思为无线最新研发的一款SOC无线模块&#xff0c;模块主芯片采用了ST 公司的STM32WLE5芯片研发。模块采用LoRa调制&#xff0c;内置工业级晶振&#xff0c;并基于高性能的ArmCortex-m4 32位RISC核心&#xff0c;工作频率高达48 MHz。这个核心实现了一套完整的DS…

攻防世界-mobile-easy-app详解

序言 这道题网上很多分析&#xff0c;但是分析的都是arm版本的&#xff0c;我选了arm64的来分析&#xff0c;arm64相比arm难度高一些&#xff0c;因为arm64编译器搞了inline优化&#xff0c;看起来略抽象 分析 这道题逻辑很简单&#xff0c;输入flag然后一个check函数验证&a…

【传知代码】Modnet 人像抠图-论文复现

文章目录 概述原理介绍核心逻辑ModNet 的结构 环境配置WebUI 小结 论文地址 论文GitHub 本文涉及的源码可从Modnet 人像抠图该文章下方附件获取 概述 人像抠图技术在多个领域有着广泛的应用场景&#xff0c;包括但不限于&#xff1a; 展馆互动拍照&#xff1a;展馆中使用的抠…

KMP算法【C++】

KMP算法测试 KMP 算法详解 根据解释写出对应的C代码进行测试&#xff0c;也可以再整理成一个函数 #include <iostream> #include <vector>class KMP { private:std::string m_pat;//被匹配的字符串std::vector<std::vector<int>> m_dp;//状态二维数组…

线程---多线程--互斥--条件变量--生产消费模型

概念 线程是进程内部的执行分支&#xff0c;是CUP调度的基本单位 进程内核数据结构进程代码和数据 线程的理解&#xff1a; 产生的原因&#xff1a; 我们的代码在进程中是串行运行的&#xff0c;如果我们想要使他并行运行&#xff0c;分别完成不同的任务。之前的做法的创建子…

深入解析kube-scheduler的算法自定义插件

目录 ​编辑 一、问题引入 二、自定义步骤 三、最佳实践考虑 一、问题引入 当涉及到 Kubernetes 集群的调度和资源分配时&#xff0c;kube-scheduler 是一个关键组件。kube-scheduler 负责根据集群的调度策略&#xff0c;将 Pod 分配到适当的节点上。kube-scheduler 默认使…

cn.hutool.poi.excel 实现excel导出效果 首行高度,行样式,颜色,合并单元格,例子样式

需求 接了需求&#xff0c;下载excel模版&#xff0c;本来看着还是简单的&#xff0c;然后实现起来一把泪&#xff0c;首先是使用poi&#xff0c;我查了好久&#xff0c;才实现&#xff0c;然后是我用easyexcel又实现了一遍&#xff0c;用了一个周多才实现。 这是需求&#x…

web前端学习笔记11

11. CSS3高级特效 11.1 CSS3变形 CSS3变形是一些效果的集合, 如平移、旋转、缩放、倾斜效果 每个效果都可以称为变形(transform),它们可以分别操控元素发生平移、旋转、缩放、倾斜等变化 语法 transform:[transform-function] ; /* 设置变形函数,可以是一个,也可以是多…

python:__class_getitem__使用以及cached_property源码分析

python&#xff1a;__class_getitem__使用以及cached_property源码分析 1 前言 Python中如何模拟泛型类型&#xff1f; 当使用类型标注时&#xff0c;使用 Python 的方括号标记来形参化一个 generic type 往往会很有用处。 例如&#xff0c;list[int] 这样的标注可以被用来表…

如何通过OpenHarmony的音频模块实现录音变速功能?

简介 OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;是由开放原子开源基金会孵化及运营的开源项目&#xff0c;是面向全场景、全连接、全智能时代的智能物联网操作系统。 多媒体子系统是OpenHarmony系统中的核心子系统&#xff0c;为系统提供了相机、…

Python语法学习之 - 生成器表达式(Generator Expression)

第一次见这样的语法 本人之前一直是Java工程师&#xff0c;最近接触了一个Python项目&#xff0c;第一次看到如下的代码&#xff1a; i sum(letter in target_arr for letter in source_arr)这条语句是计算source 与 target 数组中有几个单词是相同的。 当我第一眼看到这样…

Offline RL : Beyond Reward: Offline Preference-guided Policy Optimization

ICML 2023 paper code preference based offline RL&#xff0c;基于HIM&#xff0c;不依靠额外学习奖励函数 Intro 本研究聚焦于离线偏好引导的强化学习&#xff08;Offline Preference-based Reinforcement Learning, PbRL&#xff09;&#xff0c;这是传统强化学习&#x…

js二进制数据,文件---ArrayBuffer,二进制数组

1.二进制数据 在 JavaScript 中有很多种二进制数据格式&#xff0c;比如&#xff1a;ArrayBuffer&#xff0c;Uint8Array&#xff0c;DataView&#xff0c;Blob&#xff0c;File 及其他。 2.ArrayBuffer 基本的二进制对象是 ArrayBuffer —— 对固定长度的连续内存空间…

linux:信号深入理解

文章目录 1.信号的概念1.1基本概念1.2信号的处理基本概念1.3信号的发送与保存基本概念 2.信号的产生2.1信号产生的五种方式2.2信号遗留问题(core,temp等) 3.信号的保存3.1 信号阻塞3.2 信号特有类型 sigset_t3.3 信号集操作函数3.4 信号集操作函数的使用 4.信号的处理4.1 信号的…

Qt输入输出类使用总结

Qt输入输出类简介 QTextStream 类(文本流)和 QDataStream 类(数据流)Qt 输入输出的两个核心类,其作用分别如下: QTextStream 类:用于对数据进行文本格式的读/写操作,可在 QString、QIODevice或 QByteArray 上运行,比如把数据输出到 QString、QIODevice 或 QByteArray 对象…

Ubuntu切换内核版本

#安装内核安装工具 sudo apt-get install software-properties-common sudo add-apt-repository ppa:cappelikan/ppa sudo apt-get update sudo apt-get install mainline#安装指定内核版本(有些版本并不能安装成功) mainline install 5.14.10#更新GRUB配置 sudo update-grub#查…