QPushButton

简介

QPushButton是一个很常用的一个按钮控件,主要用于创建一个可按压的按键。它显示了一 个文本和一个图标。另外,你也可以在创建时,指定一个快捷键。

基本用法

1. 创建

QPushButton主要有两种创建方法,一种是直接在QtCreator上进行拖拽添加,另外一种是用代码创建。

用代码创建如下:

QPushButton *button = new QPushButton("Download", this);

你也可以在创建的时候这样写:

QPushButton *button = new QPushButton("&Download", this);

这样,你就指定了一个快捷键,用于按下这个按钮,具体的规则为:
在"&"后面的那个字母就是你的快捷键,而且快捷键的组合方式为Alt + D。所以如果你是这样写

QPushButton *button = new QPushButton("D&ownload", this);

你的快捷键就是:Alt + o

2. 设置信息

你也可以自己手动的去设置信息,包括按钮上面的字,按钮上的图标。
调用setText来设置按钮上的文字:

button->setText("下载");

调用setIcon来设置按钮上的图标

QIcon icon("D:/icon.png");
button->setIcon(icon);

autoRepeat

属性autoRepeat,当这个属性为true的时候,你鼠标左键按下键盘之后,会持续性的释放pressedreleasedclicked信号,直到你松下鼠标左键为止;

    ui->pushButton_3->setAutoRepeat(true);
connect(ui->pushButton_3, &QPushButton::pressed, [] () {
qDebug() << "pressed";
}); connect(ui->pushButton_3, &QPushButton::clicked, [] () {
qDebug() << "clicked";
}); connect(ui->pushButton_3, &QPushButton::released, [] () {
qDebug() << "released";
});

在按下之后,会得到如下效果:

autoRepeatDelay

这个属性用来设置前面的autoRepeat这个在自动重复前的延迟,也就是说在按下之后,等待这个设置的延迟之后,才会开启自动重复。

ui->pushButton_3->setAutoRepeatDelay(2000);

效果如下:

autoRepeatInterval

这个属性是设置每个重复信号发射之间的间隔,

ui->pushButton_3->setAutoRepeatInterval(2000);

效果如下:

信号的连接

主要的信号主要是鼠标点击按钮时,发射的信号,主要是click信号,你可以连接这两个信号,来实现自己的功能。

connect(button, SIGNAL(click()), this, SLOT(doSomething()));

样式表设计

我们可以设计样式表,来达到美化按钮的目的。

QPushButton
{
background-color: rgb(111, 221, 255);
font: 8px "Microsoft YaHei";
color: black;
}

另外如果要设置图片背景给QPushButton,请移步Qt Qss 设置QPushButton图标和背景

同时你也可以根据按钮的伪状态来设置对应的样式表:

/*按下的状态*/
QPushButton:pressed
{
/*要设计的样式*/
} /*悬浮的状态*/
QPushButton:hover
{
/*要设计的样式*/
}

最终的代码和效果如下:

QPushButton *button = new QPushButton("D&ownload", this);

QIcon icon("D:/icon.png");
button->setIcon(icon); connect(button, SIGNAL(click()), [] () {
QMessageBox::information(nullptr, "提示", "按钮按下");
}); button->setStyleSheet("QPushButton{\n background-color: rgb(111, 221, 255);\n font: 14px \"Microsoft YaHei\";\n color: black;\n}");

[Qt 基础-01] QPushButton的更多相关文章

  1. 基于C/S架构的3D对战网络游戏C++框架 _04客户端详细设计与OpenGL、Qt基础

    本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...

  2. javascript基础01

    javascript基础01 Javascript能做些什么? 给予页面灵魂,让页面可以动起来,包括动态的数据,动态的标签,动态的样式等等. 如实现到轮播图.拖拽.放大镜等,而动态的数据就好比不像没有 ...

  3. Androd核心基础01

    Androd核心基础01包含的主要内容如下 Android版本简介 Android体系结构 JVM和DVM的区别 常见adb命令操作 Android工程目录结构 点击事件的四种形式 电话拨号器Demo ...

  4. java基础学习05(面向对象基础01)

    面向对象基础01 1.理解面向对象的概念 2.掌握类与对象的概念3.掌握类的封装性4.掌握类构造方法的使用 实现的目标 1.类与对象的关系.定义.使用 2.对象的创建格式,可以创建多个对象3.对象的内 ...

  5. Linux基础01 学会使用命令帮助

    Linux基础01 学会使用命令帮助 概述 在linux终端,面对命令不知道怎么用,或不记得命令的拼写及参数时,我们需要求助于系统的帮助文档:linux系统内置的帮助文档很详细,通常能解决我们的问题, ...

  6. 可满足性模块理论(SMT)基础 - 01 - 自动机和斯皮尔伯格算术

    可满足性模块理论(SMT)基础 - 01 - 自动机和斯皮尔伯格算术 前言 如果,我们只给出一个数学问题的(比如一道数独题)约束条件,是否有程序可以自动求出一个解? 可满足性模理论(SMT - Sat ...

  7. LibreOJ 2003. 「SDOI2017」新生舞会 基础01分数规划 最大权匹配

    #2003. 「SDOI2017」新生舞会 内存限制:256 MiB时间限制:1500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 ...

  8. java基础 01

    java基础01 1. /** * JDK: (Java Development ToolKit) java开发工具包.JDK是整个java的核心! * 包括了java运行环境 JRE(Java Ru ...

  9. 081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字

    081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字 本文知识点:new关键字 说明:因为时间紧张,本人写博客过程中只是 ...

  10. 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则

    080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...

随机推荐

  1. java到报名的编码运行

    Hello.java package a.b; import com.beyondiary.kit.KitConstant; public class Hello { public static vo ...

  2. Makefile文件中,两个$的变量变量$$Xxx 与一个$的变量 $Xxx的区别

    原文地址:Makefile文件中,两个$的变量变量$$Xxx 与一个$的变量 $Xxx的区别 Makefile 中的变量引用 在 Makefile 中,$ 符号用于变量替换,但它的使用方式有一些细微的 ...

  3. Python+Selenium模拟人工抓取数据

    Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Fire ...

  4. 使用pytorch从零开始实现一个简单的gpt

    使用pytorch从零开始实现一个简单的gpt 本文由prompt引导ChatGPT生成简易版gpt模型,根据比较关心的问题,使用了以下的prompt进行内容和代码的生成: prompt:->如 ...

  5. 2021 年万圣节 Github 彩蛋

    记录每年 Github 万圣节彩蛋,也记录有来项目成长历程. 2021 万圣节彩蛋 2020 万圣节彩蛋

  6. Solution Set - 冬日纪行(前半)

    目录 0.「集训队互测 2018」「LOJ #2504」小 H 爱染色 ✡️ 1.「LOJ #6402」yww 与校门外的树 2.「集训队互测 2019」「LOJ #3075」组合数求和 ✡️ 3.「 ...

  7. 阿里云产品之数据中台架构-copy

    1. 场景描述 客户打包买了很多阿里云的产品,但是阿里云不负责实施,基于阿里云产品与客户需求,拟采用的数据中台架构,有类似需求的,可以参考下,拿走不谢! 2. 解决方案 阿里产品大数据架构图: 从下到 ...

  8. PICO 避坑指南

    1. Win10 不需要串口驱动,使用PICO W之前先刷固件pico w的固件 micropython-firmware-pico-w-290622.rar 刚开始 刷的固件不对,一直无法识别串口. ...

  9. 加速 AI 训推:Lepton AI 如何构建多租户、低延迟云存储平台

    Lepton AI 是一款面向开发者的 AI 平台,旨在提供易用.高效且可扩展的基础设施能力.该平台适用于各种训练.推理需求,GPU充足,在保证高性能的同时,能够灵活应对不断变化的工作负载.用户可以快 ...

  10. C :文件

    一直没有系统学习过该章节,现参考<C语言程序设计 (第四版)谭浩强> C文件基本知识 什么是文件 文件名 文件的分类 文件缓冲区 文件类型指针 typedef struct { short ...