[Qt 基础-01] QPushButton
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的时候,你鼠标左键按下键盘之后,会持续性的释放pressed、released和clicked信号,直到你松下鼠标左键为止;
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的更多相关文章
- 基于C/S架构的3D对战网络游戏C++框架_04客户端详细设计与OpenGL、Qt基础
本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...
- javascript基础01
javascript基础01 Javascript能做些什么? 给予页面灵魂,让页面可以动起来,包括动态的数据,动态的标签,动态的样式等等. 如实现到轮播图.拖拽.放大镜等,而动态的数据就好比不像没有 ...
- Androd核心基础01
Androd核心基础01包含的主要内容如下 Android版本简介 Android体系结构 JVM和DVM的区别 常见adb命令操作 Android工程目录结构 点击事件的四种形式 电话拨号器Demo ...
- java基础学习05(面向对象基础01)
面向对象基础01 1.理解面向对象的概念 2.掌握类与对象的概念3.掌握类的封装性4.掌握类构造方法的使用 实现的目标 1.类与对象的关系.定义.使用 2.对象的创建格式,可以创建多个对象3.对象的内 ...
- Linux基础01 学会使用命令帮助
Linux基础01 学会使用命令帮助 概述 在linux终端,面对命令不知道怎么用,或不记得命令的拼写及参数时,我们需要求助于系统的帮助文档:linux系统内置的帮助文档很详细,通常能解决我们的问题, ...
- 可满足性模块理论(SMT)基础 - 01 - 自动机和斯皮尔伯格算术
可满足性模块理论(SMT)基础 - 01 - 自动机和斯皮尔伯格算术 前言 如果,我们只给出一个数学问题的(比如一道数独题)约束条件,是否有程序可以自动求出一个解? 可满足性模理论(SMT - Sat ...
- LibreOJ 2003. 「SDOI2017」新生舞会 基础01分数规划 最大权匹配
#2003. 「SDOI2017」新生舞会 内存限制:256 MiB时间限制:1500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
- java基础 01
java基础01 1. /** * JDK: (Java Development ToolKit) java开发工具包.JDK是整个java的核心! * 包括了java运行环境 JRE(Java Ru ...
- 081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字
081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字 本文知识点:new关键字 说明:因为时间紧张,本人写博客过程中只是 ...
- 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则
080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...
随机推荐
- java到报名的编码运行
Hello.java package a.b; import com.beyondiary.kit.KitConstant; public class Hello { public static vo ...
- RepeatReadRequestWrapper
package cn.service.web.common.filter; import com.alibaba.fastjson.JSON; import org.apache.commons.io ...
- Qt音视频开发23-通用视频控件
一.前言 在之前做的视频监控系统中,根据不同的用户需要,做了好多种视频监控内核,有ffmpeg内核的,有vlc内核的,有mpv内核的,还有海康sdk内核的,为了做成通用的功能,不同内核很方便的切换,比 ...
- Qt音视频开发7-ffmpeg音频播放
一.前言 之前用ffmpeg解码出来了音频,只是做了存储部分,比如存储成aac文件,播放的话早期用的是sdl来播放音频,自从Qt5以后提供了QAudioOutput来播放输入的音频数据,就更加方便了, ...
- WPF使用Microsoft.Toolkit.Mvvm作为Mvvm框架DryIoc作依赖注入
背景 MVVMLight已多年未更新,Microsoft.Toolkit.Mvvm作为MVVMLight继任者,需要学习一下. Microsoft.Toolkit.Mvvm跟MVVMLight使用非常 ...
- Docker Inspect 模板
Docker 使用Go 模板,您可以使用它来操作某些命令和日志驱动程序的输出格式. Docker 提供了一组基本函数来操作模板元素.所有这些示例都使用该docker inspect命令,但许多其他 C ...
- 我的c语言笔记
1. 进制转换 二进制.八进制和十六进制向十进制转换都非常容易,就是"按权相加".如:1010.1101 = 1×23 + 0×22 + 1×21 + 0×20 + 1×2-1 + ...
- Hadoop大数据架构及关键组件-建立大数据知识体系
Hadoop大数据架构及关键组件1. Hadoop生态系统1.1 架构大数据生态的主要组件及其关系大数据生态大数据架构1. HDFS(Hadoop分布式文件系统):2. MapReduce(分布式计算 ...
- idea社区版本创建springboot项目的三种方式
文章目录一.前言一.方式1:spring 官方创建 springboot项目1.打开在线的 spring initializr2.选择项目的语言.版本.依赖等3. 解压源码包,并使用IDEA打开4.测 ...
- linux内核 list_for_each_entry
1. linux内核中的list用法 在linus内核中,list一般这样使用: struct list_head { struct list_head *priv; struct list_head ...