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. RepeatReadRequestWrapper

    package cn.service.web.common.filter; import com.alibaba.fastjson.JSON; import org.apache.commons.io ...

  3. Qt音视频开发23-通用视频控件

    一.前言 在之前做的视频监控系统中,根据不同的用户需要,做了好多种视频监控内核,有ffmpeg内核的,有vlc内核的,有mpv内核的,还有海康sdk内核的,为了做成通用的功能,不同内核很方便的切换,比 ...

  4. Qt音视频开发7-ffmpeg音频播放

    一.前言 之前用ffmpeg解码出来了音频,只是做了存储部分,比如存储成aac文件,播放的话早期用的是sdl来播放音频,自从Qt5以后提供了QAudioOutput来播放输入的音频数据,就更加方便了, ...

  5. WPF使用Microsoft.Toolkit.Mvvm作为Mvvm框架DryIoc作依赖注入

    背景 MVVMLight已多年未更新,Microsoft.Toolkit.Mvvm作为MVVMLight继任者,需要学习一下. Microsoft.Toolkit.Mvvm跟MVVMLight使用非常 ...

  6. Docker Inspect 模板

    Docker 使用Go 模板,您可以使用它来操作某些命令和日志驱动程序的输出格式. Docker 提供了一组基本函数来操作模板元素.所有这些示例都使用该docker inspect命令,但许多其他 C ...

  7. 我的c语言笔记

    1. 进制转换 二进制.八进制和十六进制向十进制转换都非常容易,就是"按权相加".如:1010.1101 = 1×23 + 0×22 + 1×21 + 0×20 + 1×2-1 + ...

  8. Hadoop大数据架构及关键组件-建立大数据知识体系

    Hadoop大数据架构及关键组件1. Hadoop生态系统1.1 架构大数据生态的主要组件及其关系大数据生态大数据架构1. HDFS(Hadoop分布式文件系统):2. MapReduce(分布式计算 ...

  9. idea社区版本创建springboot项目的三种方式

    文章目录一.前言一.方式1:spring 官方创建 springboot项目1.打开在线的 spring initializr2.选择项目的语言.版本.依赖等3. 解压源码包,并使用IDEA打开4.测 ...

  10. linux内核 list_for_each_entry

    1. linux内核中的list用法 在linus内核中,list一般这样使用: struct list_head { struct list_head *priv; struct list_head ...