Qt QPushButton按钮用法详解

按钮是 GUI 开发中最常用到的一种控件,作为一款著名的 GUI 开发框架,Qt 提供了很多种按钮,比如 QPushButton(普通按钮)、QRadioButton(单选按钮)、QToolButton(工具栏按钮)等。

QPushButton 是实际开发中最常使用的一种按钮,本节就给大家详细讲解它的用法。

QPushButton按钮的创建

QPushButton 类间接继承自 QWidget 类,它的继承关系如下:

QPushButton -> QAbstractButton -> QWidget

QAbstractButton 类是所有按钮控件类的基类,包含很多通用的按钮功能。

QPushButton 类专门用来创建可按压的按钮,如图 1 所示。

图 1 QPushButton 按钮

QPushButton 按钮上除了可以放置一串文本,文本左侧还可以放置图标,必要时还可以在按钮上放置图片。QPushButton 按钮可以作为一个独立的窗口,但实际开发中很少这样用,通常的用法是像图 1 这样将按钮内嵌到某个窗口中,作为一个子控件和其它控件搭配使用。

QPushButton 类提供了 3 个构造函数,分别是:

QPushButton(QWidget *parent = Q_NULLPTR)
QPushButton(const QString &text, QWidget *parent = Q_NULLPTR)
QPushButton(const QIcon &icon, const QString &text, QWidget *parent = Q_NULLPTR)

parent 参数用于指定父窗口;text 参数用于设置按钮上要显示的文字;icon 参数用于设置按钮上要显示的图标。

注意,第一个构造函数的 parent 参数附有默认值,所以 QPushButton 类还隐含着一个默认构造函数。也就是说,实例化 QPushButton 类对象时可以不传递任何参数。

QPushButton按钮的使用

QPushButton 类提供了很多实用的属性和方法,它还从父类继承了很多属性和方法。下表给大家罗列了一些比较常用的属性和方法:

表 1 QPushButton常用属性

属 性 含 义
text 保存按钮上要显示的文字。该属性的值可以通过 text() 方法获取,也可以通过 setText(const QString &text) 方法修改。
icon 保存按钮左侧要显示的图标。该属性的值可以通过 icon() 方法获取,也可以通过 setIcon(const QIcon &icon) 方法修改。
iconsize 保存按钮左侧图标的尺寸。该属性的值可以通过 iconSize() 方法获取,也可以通过 setIconSize(const QSize &size) 方法修改。
size 保存按钮的尺寸。该属性的值可以通过 size() 方法获取,也可以通过 resize(int w, int h) 或者 resize(const QSize &) 方法修改。
font 保存按钮上文字的字体和大小。该属性的值可以通过 font() 方法获取,也可以通过 setFont(const QFont &) 方法修改。
flat 初始状态下,按钮是否显示边框。flat 属性的默认值为 flase,表示按钮带有边框。该属性的值可以通过 isFlat() 方法获取,也可以通过 setFlat(bool) 方法修改。
enabled 指定按钮是否可以被按下。该属性的默认值为 true,表示按钮可以被按下,即按钮处于启用状态。当该属性的值为 false 时,按钮将不能被点击,按钮处于禁用状态。该属性的值可以通过 isEnabled() 方法获取,也可以通过 setEnabled(bool) 方法进行修改。
autoDefault 当用户按下 Enter 回车键时,是否触发点击按钮的事件。当按钮的父窗口为 QDialog 窗口时,该属性的值为 true;其它情况下,该属性的默认值为 false。该属性的值可以通过 autoFault() 方法获取,也可以通过 setAutoFault(bool) 方法修改。

除了表 1 中罗列的获取、修改属性值的方法外,QPushButton 类常用的成员方法还有:

表 2 QPushButton常用方法

方 法 功 能
move(int x, int y) 手动指定按钮位于父窗口中的位置。
setStyleSheet(const QString &styleSheet) 自定义按钮的样式,包括按钮上文字或图片的显示效果,按钮的形状等等。
setGeometry(int x, int y, int w, int h) 同时指定按钮的尺寸和位置。
adjustSize() 根据按钮上要显示的内容,自动调整按钮的大小。
setDisabled(bool disable) 指定按钮是否可以被按下。当 disable 值为 true 时,表示按钮不能被按下,即禁用按钮的功能。

QPushButton按钮的信号和槽

GUI 程序中,按钮的主要任务是完成和用户之间的交互,下表罗列了 QPushButton 类常用的信号函数和槽函数:

表 3 QPushButton信号和槽

信号函数 功 能
clicked() clicked(bool checked = false) 用户点击按钮并释放(或者按下按钮对应的快捷键)后,触发此信号。
pressed() 用户按下按钮时会触发此信号。
released() 用户松开按钮时会触发此信号。
槽函数 功 能
click() 单击指定的按钮。
setIconSize() 重新设置按钮上图片的尺寸。
hide() 隐藏按钮控件。
setMenu(QMenu *menu) 弹出与按钮关联的菜单。

实例演示QPushButton按钮用法

接下来通过一个实例,给大家演示 QPushButton 按钮的用法:

#include <QApplication>
#include <QWidget>
#include <QPushButton>
int main(int argc, char *argv[])
{QApplication a(argc, argv);QWidget widget;//设置 widget 窗口的标题widget.setWindowTitle("QWidget窗口");//创建一个按钮,并内嵌到 widget 窗口中QPushButton but("QPushButton按钮",&widget);//按钮的位置位于距 widget 窗口左上角 (100,100) 的位置but.move(100,100);//设置按钮上文字的大小。but.setStyleSheet("QPushButton{font:20px;}");//调整按钮的尺寸but.resize(200,200);//建立信息和槽,当用户点击并释放按钮后,该按钮隐藏。QObject::connect(&but,&QPushButton::clicked,&but,&QPushButton::hide);widget.show();return a.exec();
}

将程序复制到 main.cpp 文件中,运行结果为:

图 2 运行结果

Qt QPushButton按钮用法详解相关推荐

  1. Qt中QList用法详解

    QList 列表指针的 释放 1,使用qDeleteAll() QList<T*> list: qDeleteAll(list): list = NULL; QList<T*> ...

  2. Qt QListWidget列表框用法详解

    Qt QListWidget列表框用法详解 很多应用程序中需要以列表的形式向用户展示数据(资源),比如 Windows 操作系统会以列表的方式展示很多张桌面背景图(如图 1a) 所示),再比如很多音乐 ...

  3. Qt QLineEdit单行输入框用法详解

    Qt QLineEdit单行输入框用法详解 QLineEdit 是 Qt 提供的一个控件类,它直接继承自 QWdiget 类,专门用来创建单行输入框,如下图所示: 图 1 单行文本输入框 实际开发中, ...

  4. 教程-Delphi中Spcomm使用属性及用法详解

    Delphi中Spcomm使用属性及用法详解 Delphi是一种具有 功能强大.简便易用和代码执行速度快等优点的可视化快速应用开发工具,它在构架企业信息系统方面发挥着越来越重要的作用,许多程序员愿意选 ...

  5. QT:常用函数详解--常用操作记录(个人笔记)

    QT:常用函数详解(个人笔记) PS:一下内容个人笔记,要求自己看懂,随笔,阅读体验会很差很差! Qt setContentsMargins()函数 函数原型:void QLayout::setCon ...

  6. Extjs Window用法详解 3 打印具体应用,是否关掉打印预览的界面

    Extjs Window用法详解 3 打印具体应用,是否关掉打印预览的界面 Extjs 中的按钮元素 { xtype: 'buttongroup', title: '打印', items: [ me. ...

  7. fileinput 时间_JavaScript_Bootstrap Fileinput文件上传组件用法详解,最近时间空余,总结了一些关...

    最近时间空余,总结了一些关于bootstrap fileinput组件的一些常见用法,特此分享到phpstudy平台,供大家参考,同时也方便以后的查找.本文写的不好还请见谅. 一.效果展示 1.原始的 ...

  8. selenium用法详解

    selenium用法详解 selenium主要是用来做自动化测试,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题. 模拟浏览器进行网页加载,当requests,urllib无法正常获取 ...

  9. android butterknife 自定义view,ButterKnife用法详解.md

    # ButterKnife用法详解 ### 如何成为T型人才,垂直在一个行业中,必须要有一整套[知识体系](https://github.com/WeiSmart/Android-Advanced-C ...

最新文章

  1. android 自定义录像机,android-camera2 - 将自定义捕获请求构建器选项设置为使用Camera2 API捕获图像以使用OpenCV库进行摄像机校准 - 堆栈内存溢出...
  2. 原生JS DOM操作方法汇总
  3. 【Python-ML】SKlearn库特征抽取-KPCA
  4. 无线鼠标接收器对码软件_接收器太小容易丢 这几招记好就不怕
  5. Dubbo服务引入原理
  6. ***出更--获取源代码的***
  7. 小学徒进阶系列—JVM对String的处理
  8. 追捕美国头号电脑通缉犯
  9. 国军标--Gjb软件需求规格说明书模板
  10. C++MFC实现win10标准计算器
  11. 冒泡排序java实现
  12. [飞控]如何学习无人机-入门篇
  13. Excel:批量将某字符替换为“换行符”
  14. Python 实现 PDF转图片 图片转PDF
  15. 《起跑吧,Opa》 -- 中译本 第一章 初识Opa
  16. 【给小白玩的脚本】自动发歌词、发弹幕
  17. 布道微服务_18服务配置中心设计方案
  18. C语言每日一练——第1天:字母大小写转换
  19. 计算机毕业设计springboot+vue基本微信小程序的小区防疫监管系统
  20. python爬虫——使用requests库和xpath爬取猎聘网职位详情

热门文章

  1. FT2232+OpenOCD为STM32烧录程序步骤
  2. idea 取消自动格式化代码
  3. JAVA 如何获取某年每天节假期情况
  4. 爬壁除锈机器人_除锈爬壁机器人控制系统的设计
  5. 彻底解决TortoiseGit中.gitignore文件失效,忽略文件失效原因及解决办法
  6. 华为升级鸿蒙会不会影响gms,华为是否会将GMS替换成HMS 鸿蒙真要上了?
  7. AutoCAD自动加载dll,并在CAD菜单栏中添加执行该dll包含的方法的菜单(图文)
  8. 安利一个windows(win10)快速搜索文件的利器 Listary
  9. 一个精简、全面、方便的AndroidLog库--ALog
  10. 大数据挖掘技术之DM经典模型