【QT】常用控件(二)

在这里插入图片描述
个人主页~

常用控件(一)~


常用控件

  • 三、按钮类控件
    • 1、Push Button
      • widget.h
      • widget.cpp
    • 2、Radio Button
    • 3、Check Box
  • 四、显示类控件
    • 1、label

三、按钮类控件

1、Push Button

QPushButton继承自QAbstractButton,它是所有按钮的父类

我们从这个按钮的属性表中可以看到,QPushButton的父类是QAbstractButton,上面是QAbstractButton的父类QWidget,再向上就是QWidget的父类QObject

在这里插入图片描述
其中在QAbstractButton中,与QPushButton相关性较大的属性有这些:
text:按钮文本
icon:按钮图标
iconSize:按钮图标尺寸
shortCut:按钮快捷键
autoRepeat:按钮重复触发设置
autoRepeatDelay:重复触发的延时时间
autoRepeatInterval:重复触发的周期

下面我们来展示使用一下以上提到的这些属性

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_pushButton_left_clicked();void on_pushButton_up_clicked();void on_pushButton_down_clicked();void on_pushButton_right_clicked();private:Ui::Widget *ui;
};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->pushButton_target->setIcon(QIcon(":/slm.jpg"));ui->pushButton_target->setIconSize(QSize(200,200));ui->pushButton_up->setIcon(QIcon(":/up.png"));ui->pushButton_up->setIconSize(QSize(100,100));ui->pushButton_down->setIcon(QIcon(":/down.png"));ui->pushButton_down->setIconSize(QSize(100,100));ui->pushButton_left->setIcon(QIcon(":/left.png"));ui->pushButton_left->setIconSize(QSize(100,100));ui->pushButton_right->setIcon(QIcon(":/right.png"));ui->pushButton_right->setIconSize(QSize(100,100));ui->pushButton_up->setShortcut(Qt::Key_W);ui->pushButton_down->setShortcut(Qt::Key_S);ui->pushButton_left->setShortcut(Qt::Key_A);ui->pushButton_right->setShortcut(Qt::Key_D);}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_left_clicked()
{QRect r = ui->pushButton_target->geometry();ui->pushButton_target->setGeometry(r.x()-10,r.y(),r.width(),r.height());qDebug() << "left";
}void Widget::on_pushButton_up_clicked()
{QRect r = ui->pushButton_target->geometry();ui->pushButton_target->setGeometry(r.x(),r.y() - 10,r.width(),r.height());qDebug() << "up";
}void Widget::on_pushButton_down_clicked()
{QRect r = ui->pushButton_target->geometry();ui->pushButton_target->setGeometry(r.x(),r.y() + 10,r.width(),r.height());qDebug() << "down";
}void Widget::on_pushButton_right_clicked()
{QRect r = ui->pushButton_target->geometry();ui->pushButton_target->setGeometry(r.x()+10,r.y(),r.width(),r.height());qDebug() << "right";
}

pushbutton

观察视频我们可以发现,当我使用键盘快捷键按住时,会发生连点,而我用鼠标按住不会发生连点,这都是生成的默认值,我们可以通过下面的函数来打开鼠标连点模式

setAutoRepeat(true);

通过下面函数设置两次连点之间的最小时间

SetAutoRepeatDelay(1000);

我们知道有些游戏的挂是有连点器的,我们可以通过下面的函数来设置一个连点器,它是每经过特定的时间就会触发一次点击

setAutoRepeatInterval(500);

2、Radio Button

RadioButton就是单选选项,可以让我们在多个选项中选择一个,和QAbstractButton相关的属性:

checkable:能否被选中
checked:是否被选中
autoExclusive:是否选择后会取消其他按钮的选中,对于RadioButton默认为是

RadioButton

如果想要设置默认值,只需要在构造函数中先设置好初始值就行

但是这样的一个问题就是,如果我在界面上设置了十个RadioButton,但是这十个RadioButton对应的是五个判断题,那我们应该分五组,每组有一个被选择,此时我们就要用到qbuttongroup来进行分组

RadioButton_2

3、Check Box

qcheckbox是复选按钮,可以选中多个选项

checkbox

四、显示类控件

1、label

QLabel可以用来显示文本和图片

属性说明
text设置文本
textFormat设置文本格式
pixmap设置包含的图片
scaledContents设置自动拉伸
alignment设置对齐方式
wordWrap设置自动换行
indent设置文本缩进
margin设置文本和边框之间的间距
openExternalLinks设置是否允许打开外部链接
buddy设置关联伙伴

在这里插入图片描述
第一段是普通文本,第二段是富文本,第三段是markdown文本

label

这里设置了自动拉伸但是不可充斥整个边框
在这里插入图片描述
想要充斥整个边框就需要用到C++多态的知识,对于父类的虚函数如果我们在子类中重写,将会执行子类的重写后的函数,这里的resizeEvent是一个在我们调整窗口大小的时候自动调用的函数,我们将其重写,将图片设置为充斥整个窗口

label_2

这里的QFrame用来设置边框的的性质,认识这个性质好让我们的下一步进行操作
在这里插入图片描述

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->label->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);//垂直水平居中ui->label->setText("super_little_monster");ui->label_2->setAlignment(Qt::AlignTop|Qt::AlignLeft);ui->label_2->setWordWrap(true);//自动换行ui->label_2->setText("这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本");//ui->label_2->setText("super_little_monster super_little_monster super_little_monster");ui->label_3->setAlignment(Qt::AlignTop|Qt::AlignLeft);ui->label_3->setIndent(20);//上左下有20的间距,右侧没有ui->label_3->setWordWrap(true);ui->label_3->setText("这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本");//ui->label_3->setText("super_little_monster super_little_monster super_little_monster");ui->label_4->setAlignment(Qt::AlignTop|Qt::AlignLeft);ui->label_4->setMargin(20);//上下左右都有20的间距ui->label_4->setWordWrap(true);ui->label_4->setText("这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本");//ui->label_4->setText("super_little_monster super_little_monster super_little_monster");}Widget::~Widget()
{delete ui;
}

在这里插入图片描述
对于openExternalLinks,直接设置true或false

对于buddy
当我们把label的内容设置为“快捷键&”+某个按键的形式,当前label所绑定的buddy将会可以被键盘上的组合键alt+某个按键选中

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这里生成的就可以被组合键也是快捷键选中


今日分享就到这里了~

在这里插入图片描述

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

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

相关文章

线下陪玩导游系统软件源码,家政预约服务源码(h5+小程序+app)

游戏陪玩系统源码陪玩小程序源码搭建基于PHP&#xff0b;MySQL陪玩系统app源码陪玩系统定制开发服务、成品陪玩系统源码 系统基于Nginx或者Apache PHP7.3 数据库mysql5.6 前端为uniapp-vue2.0 后端为thinkphp6 有域名授权加密&#xff0c;其他开源可二开 演示源码下载 开…

Zookeeper快速入门:部署服务、基本概念与操作

文章目录 一、部署服务1.下载与安装2.查看并修改配置文件3.启动 二、基本概念与操作1.节点类型特性总结使用场景示例查看节点查看节点数据 2.文件系统层次结构3.watcher 一、部署服务 1.下载与安装 下载&#xff1a; 一定要下载编译后的文件&#xff0c;后缀为bin.tar.gz w…

如何匿名浏览网站,保护在线隐私?

在现如今的网络世界&#xff0c;在线隐私已不复存在。你总是被跟踪&#xff0c;即使你使用隐身模式也无济于事。隐身模式会阻止浏览器保存你的浏览历史记录。但它并不能阻止你的互联网服务提供商 (ISP)、雇主、学校、图书馆或你访问的网站看到你在网上做什么。 更有不法分子在未…

CVE-2015-4852 Weblogic T3 反序列化分析

0x01 前言 看到很多师傅的面经里面都有提到 Weblogic 这一个漏洞&#xff0c;最近正好有一些闲暇时间&#xff0c;可以看一看。 因为环境上总是有一些小问题&#xff0c;所以会在本地和云服务器切换着调试0x02 环境搭建 • 太坑了&#xff0c;我的建议是用本地搭建的方法&…

【C语言】一维数组应用Fibonacci数列

Fibonacci数&#xff08;斐波那契数列&#xff09; 前两项为1&#xff0c;从第三项开始&#xff0c;每一项为前两项的和。可以知道连续三项的关系&#xff1a;f[i]f[i-1]f[i-2] 使用数组进行存储&#xff0c;十分方便。可以知道前n项的fibonacci数。 #include <stdio.h>…

ios局域网访问主机Xcode配置

前景&#xff1a; 公司业务是做智能家居&#xff0c;所有设备通过主机控制&#xff0c;目前有个产品需求是&#xff0c;在没有外网的情况下依然能够通过局域网控制主机的设备。 IOS开发需要做的&#xff1a; 除了业务代码之外&#xff0c;前提还要配置访问局域网功能。有以下…

诺贝尔经济学奖历史名单数据集(1969-2024年)

2024年诺贝尔经济学奖授予了达龙阿西莫格鲁&#xff08;Daron Acemoglu&#xff09;、西蒙约翰逊&#xff08;Simon Johnson&#xff09;和詹姆斯A罗宾逊&#xff08;James A. Robinson&#xff09;&#xff0c;以表彰他们在理解制度如何影响经济发展方面的贡献。&#xff08;“…

Linux 外设驱动 应用 3 串口

3 串口 3.1 串口原理 串行口是计算机一种常用的接口&#xff0c;具有连接线少&#xff0c;通讯简单&#xff0c;得到广泛的使用。常用的串口是 RS- 232-C接口(又称 EIA RS-232-C)它是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同…

Input-Source-Pro:自动切换输入法并提示状态

Input Source Pro 是一款 macOS 上的输入法辅助工具&#xff0c;它可以根据不同应用、不同网站来自动切换输入法&#xff0c;并可以在鼠标周围显示当前输入法状态。 macOS 不像 Windows 那样能保存输入法状态&#xff0c;因此这样的软件还是挺有用的。 ‍ 介绍 官网&#x…

OceanBase中扩容OCP节点step by step

许多用户在开始使用OceanBase时部署OCP&#xff0c;通常选择单节点部署。但随着后续业务规模的不断扩大&#xff0c;会开始担忧单节点OCP在面对故障时可能丧失对集群运维管控的连续性。鉴于此&#xff0c;会将现有的单节点OCP扩展至多节点部署&#xff0c;以此来确保OCP服务的高…

『Mysql集群』Mysql高可用集群之读写分离(二)

前言 主从复制: 解决了Mysql的单点故障问题以及提高MySQL的整体服务性能. 读写分离: 解决的是数据库的读性能问题,分担主库的压力&#xff0c;提高系统的可用性和稳定性。 分库分表: 数据库分表可以解决单表海量数据的查询性能问题&#xff0c;分库可以解决单台数据库的并发…

计算机网络——应用层(DNS域名系统、文件传输协议FTP、远程终端协议TELNET、万维网)

应用层概述 不同网络应用的应用进程之间&#xff0c;还需要用不同的通信规则。因此在运输层协议之上&#xff0c;还需要有应用层协议。 每个应用层协议都是为了解决某一类应用问题&#xff0c;而问题的解决又必须通过位于不同主机中的多个应用进程之间的通信和协同工作来完成。…

网络七层架构

目录标题 网络七层架构从正确认识网络七层架构开始 网络七层架构 简介&#xff1a; 网络七层架构是指ISO/OSI模型&#xff0c;它是国际标准化组织&#xff08;ISO&#xff09;制定的一种用于计算机网络体系结构的参考模型。该模型将计算机网络的功能划分为七个层次&#xff0c…

Spring Boot知识管理:跨平台集成方案

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

【UML】一个UML学习的还不错的几个帖子

https://segmentfault.com/a/1190000042775634 寂然解读设计模式 - UML类图&类的六大关系-阿里云开发者社区

信息抽取数据集处理——RAMS

引言 RAMS数据集&#xff08;RAMS&#xff1a;Richly Annotated Multilingual Schema-guided Event Structure&#xff09;由约翰斯霍普金斯大学于2020年发布&#xff0c;是一个以新闻为基础的事件抽取数据集。它标注了9,124个事件&#xff0c;涵盖了139种不同的事件类型和65种…

客户案例 | Ansys与台积电和微软合作加速光子仿真

Ansys与台积电和微软展开合作&#xff0c;将硅光子器件的仿真和分析速度提高10倍以上 主要亮点 借助使用NVIDIA图形处理单元&#xff08;GPU&#xff09;的Microsoft Azure虚拟机&#xff0c;Ansys Lumerical™ FDTD 3D电磁仿真的光子器件仿真速度实现了10倍提升 凭借Azure云…

k8s系列-Rancher 上操作的k8s容器网络配置总结

Rancher 上操作的k8s容器网络配置总结 要在 Rancher 中配置Spring Boot 应用 ykhd-zhjgyw-xpwfxfjfl 服务&#xff0c;正确的配置方式如下&#xff1a; 1. 应用程序监听端口 在 application.yaml 文件中&#xff0c;配置的应用监听端口是 10001&#xff0c;并且应用的上下文…

C++ | Leetcode C++题解之第485题最大连续1的个数

题目&#xff1a; 题解&#xff1a; class Solution { public:int findMaxConsecutiveOnes(vector<int>& nums) {int maxCount 0, count 0;int n nums.size();for (int i 0; i < n; i) {if (nums[i] 1) {count;} else {maxCount max(maxCount, count);coun…

idea2024启动Java项目报Error running CloudPlApplication. Command line is too long.

idea2024启动Java项目报Error running CloudPlApplication. Command line is too long. 解决方案&#xff1a; 1、打开Edit Configurations 2、点击Modify options设置&#xff0c;勾选Shorten command line 3、在Edit Configurations界面下方新增的Shorten command line选项中…