【Qt】常用控件QPushButton

 常用控件QPushButton

QWidget中涉及的各种属性/函数/使用方法,对Qt中的各种控件都是有效的。

QPushButton继承自QAbstractButton。这个类是抽象类,是其他按钮的父类。

QAbstractButton中和QPushButton相关性比较大的属性。

属性说明

text

按钮中的⽂本

icon

按钮中的图标

iconSize

按钮中图标的尺⼨

shortCut

按钮对应的快捷键

autoRepeat

按钮是否会重复触发. 当⿏标左键按住不放时,

如果设为 true, 则会持续产⽣⿏标点击事件;

如果设为 false, 则必须释放⿏标, 再次按下⿏标时才能产⽣点击事件.

(相当于游戏⼿柄上的 "连发" 效果)

autoRepeatDelay

重复触发的延时时间. 按住按钮多久之后, 开始重复触发.

autoRepeatInterval

重复触发的周期.

例子:给按钮加图标

1.首先准备一张图片(可以在阿里巴巴矢量图标库免费查找)

2.将图片导入Qt中,使用qrc管理。(后续在编写代码的时候,如果需要使用图片等外部资源,都会优先考虑qrc管理,除非这个资源太大)

在Qt Creator中,创建好qrc文件之后,切换到代码编辑框,编写代码,如果想要再次查看qrc编辑器,点击之后可能是无效的。此时,可以找到下拉菜单进行点击即可。

3.编写代码

可以将尺寸变大

例子:给按钮添加快捷键

引入快捷键操作,通过四个按钮控制target按钮的移动。

(1)创建qrc文件,导入资源

此处按钮直接通过图片来表示。

将图片导入项目的时候,由于图片过多,如果不想再放在项目根目录下面,就可以创建一个新目录(image目录),将图片放在新目录里面,此时意味着后续访问这些图片,就需要再在路径上带上image这一级目录名字。

(2)创建ui文件,创建界面 

通过点阵,可以将按钮进行对齐,后序的学习过程中还会介绍更好的方式来完成上述“”对齐

这是Qt程序运行过程中,对象树的模样。可以很直观的看到对象结构,以及每个对象的objectName

(3)编写构造函数,完成初始化操作

(4)实现方向键的槽函数

(5)设置快捷键(关键要点)------需要在Widget的构造函数中完成,程序一旦启动,快捷键就是有效果的。

参数是一个QKeySequence对象,按下的快捷键不一定是单个按键,也可能是组合键。

这种方式是直接通过按键的名字来设置,虽然简单,但是容易写错。

可以通过按键的枚举的方式来设置

加上ctrl键

(6)连发功能

键盘快捷键默认就是可以连发的,但是鼠标点击按钮则不行。

代码实现:

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置图标//targetui->pushButton_target->setIcon(QIcon(":/image/dogHead.png"));ui->pushButton_target->setIconSize(QSize(100, 100));//upui->pushButton_up->setIcon(QIcon(":/image/up.png"));ui->pushButton_up->setIconSize(QSize(50, 50));//downui->pushButton_down->setIcon(QIcon(":/image/down.png"));ui->pushButton_down->setIconSize(QSize(50, 50));//leftui->pushButton_left->setIcon(QIcon(":/image/left.png"));ui->pushButton_left->setIconSize(QSize(50, 50));//rightui->pushButton_right->setIcon(QIcon(":/image/right.png"));ui->pushButton_right->setIconSize(QSize(50, 50));//设置快捷键//直接通过按键的名字来设置
//    ui->pushButton_up->setShortcut(QKeySequence("w"));
//    ui->pushButton_down->setShortcut(QKeySequence("s"));
//    ui->pushButton_left->setShortcut(QKeySequence("a"));
//    ui->pushButton_right->setShortcut(QKeySequence("d"));//通过按键的枚举来设置按键快捷键ui->pushButton_up->setShortcut(QKeySequence(Qt::Key_W));ui->pushButton_down->setShortcut(QKeySequence(Qt::Key_S));ui->pushButton_left->setShortcut(QKeySequence(Qt::Key_A));ui->pushButton_right->setShortcut(QKeySequence(Qt::Key_D));//加上ctrl键
//    ui->pushButton_up->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_W));
//    ui->pushButton_down->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_S));
//    ui->pushButton_left->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_A));
//    ui->pushButton_right->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_D));//开启鼠标点击连发功能ui->pushButton_up->setAutoRepeat(true);ui->pushButton_down->setAutoRepeat(true);ui->pushButton_left->setAutoRepeat(true);ui->pushButton_right->setAutoRepeat(true);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_up_clicked()
{//获取terget的位置QRect rect = ui->pushButton_target->geometry();//基于上次位置,设置新位置ui->pushButton_target->setGeometry(rect.x(), rect.y() - 5, rect.width(), rect.height());
}void Widget::on_pushButton_down_clicked()
{//获取terget的位置QRect rect = ui->pushButton_target->geometry();//基于上次位置,设置新位置ui->pushButton_target->setGeometry(rect.x(), rect.y() + 5, rect.width(), rect.height());
}void Widget::on_pushButton_left_clicked()
{//获取terget的位置QRect rect = ui->pushButton_target->geometry();//基于上次位置,设置新位置ui->pushButton_target->setGeometry(rect.x() - 5, rect.y(), rect.width(), rect.height());
}void Widget::on_pushButton_right_clicked()
{//获取terget的位置QRect rect = ui->pushButton_target->geometry();//基于上次位置,设置新位置ui->pushButton_target->setGeometry(rect.x() + 5, rect.y(), rect.width(), rect.height());
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/407550.html

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

相关文章

TCP/UDP的对比,粘包分包抓包,http协议

服务器端: 一、loop 127.0.0.1本地回环测试地址 二、tcp特点 面向连接、可靠传输、字节流 粘包问题:tcp流式套接字,数据与数据之间没有套接字,导致可能多次的数据粘到一起 解决方法:(1)规…

后端Java秋招面试中的自我介绍需要说什么?

本文主要面向校招/实习面试中求职后端开发岗位的同学,其他岗位/社招的同学也可以参考,道理都是相通的 1 背景 1.1为什么要认真准备自我介绍? 1. 必要性:在求职面试中,一般来说同学和面试官打过招呼之后第一项就是自…

html+css+js网页设计 电商 珠宝首饰电商3个页面

htmlcssjs网页设计 电商 珠宝首饰电商3个页面 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1…

网络编程知识点总结

物理链路网络运输会话表示应用 物链网运会表应 实际的数据帧 TCP和UDP的异同(笔试面试) 主机:host 转换:to 网络:network uint32_t htonl(uint32_t hostlong); //将4字节无符号整数的主机字节序转换为网络字节序&a…

掌握语义内核(Semantic Kernel):如何使用Memories增强人工智能应用

随着人工智能领域的不断发展,语义内核(Semantic Kernel)的概念应运而生,为我们处理和理解庞大的数据集提供了新的视角。今天,我们将聚焦于语义内核中的一个核心概念——Memories,它是如何使我们的数据查询更…

QT中使用QAxObject类读取xlsx文件内容并显示在ui界面

一、源码 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACEclass MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent nullptr);~MainWindow();pr…

鸿蒙内核源码分析(共享内存) | 进程间最快通讯方式

运行机制 共享好端端的一词&#xff0c;近些年被玩坏了&#xff0c;共享单车,共享充电宝,共享办公室&#xff0c;共享雨伞… 甚至还有共享女朋友&#xff0c;真是人有多大胆&#xff0c;共享有多大产。但凡事太尽就容易恶心到人&#xff0c;自己也一度被 共享内存 恶心到了&am…

看图学sql之sql中的子查询

&#xfeff;&#xfeff; &#xfeff;where子句子查询 语法&#xff1a; SELECT column_name [, column_name ] FROM table1 [, table2 ] WHERE column_name OPERATOR(SELECT column_name [, column_name ]FROM table1 [, table2 ][WHERE]) 子查询需要放在括号( )内。O…

解决git checkout -b 拉取远端某分支到本地时报错

问题描述 日常开发场景中&#xff0c;经常会出现切分支的情况&#xff0c;所以git checkout 命令是非常高频的 git checkout -b feature/xxx默认情况下&#xff0c;这条命令是基于当前所在分支来开辟新分支feature/xxx 但是&#xff0c;还有一些情况&#xff0c;我们需要基于…

appium下载及安装

下载地址&#xff1a;https://github.com/appium/appium-desktop/releases 双击安装就可以

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(三)---创建自定义激光雷达Componet组件

前言 本系列教程旨在使用UE5配置一个具备激光雷达深度摄像机的仿真小车&#xff0c;并使用通过跨平台的方式进行ROS2和UE5仿真的通讯&#xff0c;达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础&#xff0c;Nav2相关的学习教程可以参考本人的其他博…

数学建模学习(115):主成分分析(PCA)与Python实践

文章目录 一.主成分分析简介1.1 数学背景与维度诅咒1.2 PCA的定义与应用二.协方差矩阵——特征值和特征向量三.如何为数据集选择主成分数量四.特征提取方法五.LDA——与PCA的区别六.PCA的应用七.PCA在异常检测中的应用八.总结一.主成分分析简介 1.1 数学背景与维度诅咒 主成成…

视频智能分析平台烟火检测视频安防监控烟火算法识别应用方案

烟火检测算法的应用方案主要围绕其核心技术——深度学习&#xff08;特别是卷积神经网络CNN&#xff09;和计算机视觉技术展开&#xff0c;旨在实现对监控视频中的烟雾和火焰进行实时、准确的检测与识别。以下是一个详细的烟火检测算法应用方案&#xff1a; 一、技术原理 烟火…

高并发集群饿了么后端的登录模块

高并发集群饿了么后端的登录模块 1.数据库 非交互式python&#xff1a; 非交互式: 2.数据库的负载均衡&#xff1a;阿里巴巴的mycat 修改配置文件 /usr/local/mycat/conf/server.xml :对外的账号 密码 数据库 /usr/local/mycat/conf/schema.xml 如果出现启动异常&…

【微信小程序】自定义组件 - 数据监听器

1. 什么是数据监听器 2. 数据监听器的基本用法 组件的 UI 结构如下&#xff1a; 组件的 .js 文件代码如下&#xff1a; 3. 监听对象属性的变化 数据监听器 - 案例 案例效果 2. 渲染 UI 结构 3. 定义 button 的事件处理函数 4. 监听对象中指定属性的变化 5. 监听对象中所…

readpaper在读论文时候的默认规定

红色代表主旨思想 蓝色代表专业名词解析

【MySQL】 黑马 MySQL进阶 笔记

文章目录 存储引擎MySQL的体系结构存储引擎概念存储引擎特点InnoDBMyISAMMemory 存储引擎选择 索引概述结构B Tree(多路平衡查找树)B TreeHash为什么InnoDB存储引擎选择使用Btree索引结构? 分类思考题 语法SQL性能分析&#xff08;索引相关&#xff09;SQL执行频率慢查询日志p…

XSS game复现(DOM型)

目录 1.Ma Spaghet! 2.Jefff 3.Ugandan Knuckles 4.Ricardo Milos 5.Ah Thats Hawt 6.Ligma 7.Mafia 8.Ok, Boomer 1.Ma Spaghet! 通过简单的尝试发现传递参数可以直接进入h2标签 接下来我们尝试传入一个alert(1) 可以看到并没有触发。原因是在innerHTML中官方禁用了sc…

MySQL InnoDB引擎四大特性ACID实现方案分析

文章目录 概要InnoDb引擎ACID模型的实现方案小结 概要 对于Mysql&#xff0c;事物的支撑并不依赖于Server层&#xff0c;不同的存储引擎对于事物的支持也不一样&#xff0c;对于我们常用的InnoDB引擎&#xff0c;其提供了一套基于【ACID模型】的事物完整的解决方案。为什么MyIS…

【AI Agent极限挑战赛】三大赛题揭晓

由AIGC开放社区联合联想拯救者、英特尔共同主办的【2024 AI Agent极限挑战赛】于8月17日在上海中庚聚龙酒店成功举办。赛事全面考察参赛者将AI技术应用于实际问题的能力。比赛内容包括对大语言模型的理解、提示词&#xff08;Prompt&#xff09;的结构化调优技术、个人助理Agen…