[Qt的学习日常]--常用控件2

前言

作者:小蜗牛向前冲

名言:我可以接受失败,但我不能接受放弃

  如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正

目录

一、widget的核心属性               

1、cursor

2、font

  3、toolTip和focusPolicy 

 4、styleSheet

二、 按钮类控件

1、Push Button

2、RadioButtion

3、CheckBox


本期学习:进行学习widget的核心控件,cursor,font,toolTip,focusPilocy,styleSheet以及控件类型的按键pushButton,RadioButton和checkBox复选按键

一、widget的核心属性               

1、cursor

这个属性主要是对鼠标进行操作,结合前面文章讲的创建qrc文件,我们可以更改鼠标的图标的类型。

API

说明

cursor()

获取到当前widget的cursor属性,返回QCursor对象.
标悬停在该widget上时,就会显出对应的形状.

setCursor(const QCursor& cursor)

设置该widget光标的形状.仅在标停留在该widget上时效.

QGuiApplication::setOverrideCursor(co
nst QCursor&cursor)

设置全局光标的形状.对整个程序中的所有widget都会效.覆盖
的setCursor设置的内容.

 编写widget.cpp

#include <QPixmap>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{ui->setupUi(this);// 创建⼀个位图对象, 加载⾃定义光标图⽚QPixmap pixmap(":/huaji.png");// 缩放图⽚为 64 * 64 的尺⼨.pixmap = pixmap.scaled(64, 64);// 创建 QCursor 对象, 并指定 "热点" 为 (2, 2) 坐标位置.// 所谓 "热点" 就是⿏标点击时⽣效的位置.QCursor cursor(pixmap, 2, 2);// 设置光标this->setCursor(cursor);
}

     这里会发现,我们的鼠标图案会变成我们 的资料图片。

当然我们也可以在  Qt Designer中的属性编辑器,进行选择cursor类型的选择。

2、font

      在Qt中,QFont 类用于表示字体。QFont 提供了一种方法来指定字体的各种属性,例如字体系列、字号、字重、字型等。您可以使用 QFont 来设置窗口小部件和绘图对象的字体。 

API

说明

font()

获取当前widget的字体信息.返回QFont对象.

setFont(constQFont&font)

设置当前widget的字体信息.

属性

说明

family

字体家族.如"楷体","宋体","微软雅"等.

pointSize

字体⼤⼩

weight

字体粗细.以数值式表粗细程度取值范围为[0,99],数值越,
粗.

bold

是否加粗.设置为true,相当于weight为75.设置为false相当于
weight为50.

italic

是否倾斜

underline

是否带有下划线

strikeOut

是否带有删除线

对于字体的调控往往是用来优化用户体验。

 在widget.cpp:

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置label标签的ui->label->setText("加油,你可以的");//创建字体对象QFont font;//设置字体font.setFamily("宋体");//设置字体大小font.setPointSize(20);//设置字体加粗font.setBold(true);//设置字体倾斜font.setItalic(true);//设置字体删除线font.setStrikeOut(true);//将设置实现到对象label上ui->label->setFont(font);
}

             

     对于这些设置的属性font我们也可以在 Qt Designer中的属性编辑器。这个工具允许您在设计用户界面时,直观地设置各种控件(如QLabelQPushButton等)的属性 

  3、toolTip和focusPolicy 

在Qt中,toolTip是一个属性,用于设置控件的工具提示(Tooltip)。工具提示是在用户将鼠标悬停在控件上时显示的一段文本,通常用于提供关于控件的额外信息或帮助。

API

说明

setToolTip

设置toolTip.
标悬停在该widget上时会有提说明.

setToolTipDuring

设置toolTip提的时间.单位ms.
时间到后toolTip
动消失.

 在Qt中,focusPolicy属性用于指定控件的焦点策略,决定控件是否可以接收键盘输入焦点以及如何接收焦点。焦点策略有助于管理用户界面的交互行为,特别是在使用键盘导航时

在英雄联盟选择英雄,点击鼠标让英雄到达指定位置,就是靠focusPolicy这个属性。                

PI

说明

focusPolicy()

获取该widget的focusPolicy,返回Qt::FocusPolicy

setFocusPolicy(Qt::FocusPolicypolicy)

设置widget的focusPolicy.

 Qt提供了几种焦点策略,可以通过Qt::FocusPolicy枚举类型进行设置:

  • Qt::NoFocus: 控件不能接收键盘焦点
  • Qt::TabFocus: 控件可以通过Tab键获得焦点。
  • Qt::ClickFocus: 控件可以通过鼠标点击获得焦点。
  • Qt::StrongFocus: 控件可以通过Tab键或鼠标点击获得焦点。
  • Qt::WheelFocus: 控件可以通过Tab键、鼠标点击或滚轮事件获得焦点。

 4、styleSheet

在Qt中,QStyleSheet(样式表)是一种类似于CSS(层叠样式表)的语言,用于定义和自定义控件的外观。通过使用样式表,您可以轻松地控制Qt应用程序中控件的样式,如颜色、字体、边框、大小等,从而使应用程序具有一致且美观的用户界面。

样式表的语法与CSS非常相似,以下是一些常用的属性:

  • background-color: 设置背景颜色。
  • color: 设置文本颜色。
  • font-size: 设置字体大小。
  • font-family: 设置字体系列。
  • border: 设置边框样式。
  • padding: 设置内边距。
  • margin: 设置外边距。

在Qt Designer中设置样式表

  1. 打开Qt Designer并选择一个控件。
  2. 在右侧的属性编辑器中找到styleSheet属性。
  3. 单击该属性字段,然后在弹出的样式编辑器中输入样式表代码。

在用styleSheet更改控件样式的时候,我们常常会遇到颜色的更改,那计算机中又是如何进行颜色的描述的?

 关于计算机中的颜⾊表⽰

计算机中使⽤"像素"表⽰屏幕上的⼀个基本单位(也就是⼀个发亮的光点).
每个光点都使⽤三个字节表⽰颜⾊,分别是R(red),G(green),B(blue)⼀个字节表⽰(取值范
围是0-255,或者0x00-0xFF).

混合三种不同颜⾊的数值⽐例,就能搭配出千千万万的颜⾊出来:

rgb(255, 0, 0) 或者 #FF0000 或者 #F00 表⽰纯红⾊.
rgb(0, 255, 0) 或者 #00FF00 或者 #0F0 表⽰纯绿⾊.
rgb(0, 0, 255) 或者 #0000FF 或者 #00F 表⽰纯蓝⾊.
rgb(255, 255, 255) 或者 #FFFFFF 或者 #FFF 表⽰纯⽩⾊.
rgb(0, 0, 0) 或者 #000000 或者 #000 表⽰纯⿊⾊.

二、 按钮类控件

1、Push Button

在Qt中QPushButton是一个用于创建按钮的控件,它继承自QAbstractButton,提供了按钮的基本功能和外观。QPushButton通常用于触发某个操作或事件,例如提交表单、打开对话框等。

 QAbstractButton 中,和 QPushButton 相关性较⼤的属性

属性

说明

text

按钮中的

icon

按钮中的图标

iconSize

按钮中图标的尺

shortCut

按钮对应的快捷键

autoRepeat

按钮是否会重复触发.当标左键按住不放时,
如果设为true,则会持续产
⽣⿏标点击事件;
如果设为false,则必须释放
标,再次按下标时才能产点击事件.
(相当于游戏
⼿柄上的"连发"效果)

autoRepeatDelay

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

autoRepeatInterval

重复触发的周期.

案例演示:这里我们用按键控制控制在窗口移动 

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置图标ui->pushButton_target->setIcon(QIcon(":/ice.png"));ui->pushButton_up->setIcon(QIcon(":/arrow.png"));ui->pushButton_down->setIcon(QIcon(":/down.png"));ui->pushButton_left->setIcon(QIcon(":/left.png"));ui->pushButton_right->setIcon(QIcon(":/right.png"));//设置大小ui->pushButton_target->setIconSize(QSize(120,120));//设置快捷键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->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()
{const QRect rect = ui->pushButton_target->geometry();ui->pushButton_target->setGeometry(rect.x(),rect.y()-5,rect.width(),rect.height());qDebug()<<"up";
}void Widget::on_pushButton_down_clicked()
{const QRect rect = ui->pushButton_target->geometry();ui->pushButton_target->setGeometry(rect.x(),rect.y()+5,rect.width(),rect.height());qDebug()<<"down";
}void Widget::on_pushButton_left_clicked()
{const QRect rect = ui->pushButton_target->geometry();ui->pushButton_target->setGeometry(rect.x()-5,rect.y(),rect.width(),rect.height());qDebug()<<"left";
}void Widget::on_pushButton_right_clicked()
{const QRect rect = ui->pushButton_target->geometry();ui->pushButton_target->setGeometry(rect.x()+5,rect.y(),rect.width(),rect.height());qDebug()<<"right";
}

 

  • QAbstractButton 作为 QWidget 的⼦类,当然也继承了 QWidget 的属性.上⾯介绍的 QWidget ⾥的各种属性⽤法,对于 QAbstractButton 同样适⽤.因此表格仅列出 QAbstractButton 独有的属性.
  • Qt的api设计⻛格是⾮常清晰的.此处列出的属性都是可以 获取 和 设置 的.例如,使text() 获取按钮⽂本;使⽤ setText() 设置⽂本.

2、RadioButtion

在Qt中QRadio Button是一个单选按钮控件,通常用于让用户在一组选项中选择一个。单选按钮在用户界面设计中非常常见,例如在设置对话框中让用户选择某个特定的选项。 

QAbstractButton 中和 QRadioButton 关系较⼤的属性:

属性

说明

checkable

是否能选中

checked

是否已经被选中.checkable是checked的前提条件.

autoExclusive

是否排他.
选中
个按钮之后是否会取消其他按钮的选中.
对于
QRadioButton 来说默认就是排他的.

代码案例:

 

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置默认选择按钮ui->radioButton_man->setChecked(true);//checked表示是否已经被选择,checkable是否能选中ui->label->setText("你选择的性别为:男");//设置其他不可以选中ui->radioButton_other->setCheckable(false);//这里虽然不会选中,但是仍会触发槽函数//彻底禁用otherui->radioButton_other->setEnabled(false);}Widget::~Widget()
{delete ui;
}void Widget::on_radioButton_man_clicked()
{ui->label->setText("你选择的性别为:男");
}void Widget::on_radioButton_female_clicked()
{ui->label->setText("你选择的性别为:女");
}void Widget::on_radioButton_other_clicked()
{ui->label->setText("你选择的性别为:其他");
}


                                                                                                        

这里我们不仅仅能够进行单个类型的选择,还能够进行多种类型用 RadioButtion进行选择。

引⼊QButtonGroup进⾏分组.

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//创建三个组QButtonGroup* group1 = new QButtonGroup(this);QButtonGroup* group2 = new QButtonGroup(this);QButtonGroup* group3 = new QButtonGroup(this);//将按键进行分组group1->addButton(ui->radioButton);group1->addButton(ui->radioButton_2);group2->addButton(ui->radioButton_3);group2->addButton(ui->radioButton_4);group3->addButton(ui->radioButton_5);group3->addButton(ui->radioButton_6);}

3、CheckBox

在Qt中,QCheckBox是一个复选框控件,允许用户选择或取消选择一个选项。复选框通常用于在一个表单或设置对话框中让用户选择多个选项。 

和QCheckBox 最相关的属性也是checkable 和 checked ,都是继承⾃
QAbstractButton .
 

案例演示:

void Widget::on_pushButton_clicked()
{QString result;if(ui->checkBox_sleep->isChecked()){result +=ui->checkBox_sleep->text();}if(ui->checkBox_play->isChecked()){result +=ui->checkBox_play->text();}if(ui->checkBox_study->isChecked()){result +=ui->checkBox_study->text();}qDebug()<<"选中的内容"<<result;
}

  

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

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

相关文章

ALTER TABLE 语句来添加字段或修改列的注释。

在 Apache Flink SQL 中&#xff0c;字段&#xff08;也称为列&#xff09;和注释&#xff08;也称为元数据或描述&#xff09;的管理通常与 Flink 使用的底层数据源&#xff08;如 Kafka、JDBC 数据库、Hive 等&#xff09;紧密相关。Flink SQL 本身不提供直接修改数据源中字段…

《STM32 HAL库》RCC 相关系列函数详尽解析—— HAL_RCC_OscConfig()

观前提示&#xff1a;函数完整代码在文末&#xff0c;本文梳理了函数HAL_RCC_OscConfig()的主要逻辑和实现方法f105时钟树详解图 HAL_RCC_OscConfig() 函数介绍&#xff1a; 此函数是一个用于初始化RCC&#xff08;Reset and Clock Control&#xff09;振荡器&#xff08;Osc…

【JAVA】SpringBoot + skywalking 将接口的入参、出参、异常等信息上报到skywalking 链路追踪服务器上

【JAVA】SpringBoot skywalking 将接口的入参、出参、异常等信息上报到skywalking 链路追踪服务器上 1.下载SkyWalking APM https://skywalking.apache.org/downloads/ jdk8 不支持 SkyWalking APM 9.3.0以上版本&#xff0c;所以这里我们下载 9.3.0版本 2.下载 Java Agent …

MySQL----事务

MySQL 事务主要用于处理操作量大&#xff0c;复杂度高的数据。比如&#xff0c;在学校管理系统中&#xff0c;我们删除一个学生&#xff0c;既需要删除学生的基本资料&#xff0c;也要删除和该学生相关的信息&#xff0c;如班级&#xff0c;考试成绩等等&#xff0c;这样&#…

python基础:字符集和编码

1.字符集 简单来说&#xff0c;字符集就是一套文字符号及其编码的概述。从20世纪60年代美国标准化组织ANSI发布了第一个计算机字符集ASCII开始&#xff0c;为了处理不同的文字&#xff0c;各大计算机公司&#xff0c;各国政府&#xff0c;以及各种标准化组织发明了几百种字符集…

GPT_AI高速发展中什么是Prompt提示词?

提示词&#xff08;Prompt&#xff09;是给大语言模型&#xff08;以下简称模型&#xff09;的输入文本&#xff0c;用于指定模型应该执行什么样的任务并生成什么样的输出。 提示词发挥了“提示” 模型 应该做什么的作用。设计高质量的提示词需要根据目标任务和模型能力进行精…

Eigen::Isometry3d变换矩阵的常用方法

文章目录 Eigen::Isometry3d变换矩阵的常用方法一、基本定义二、操作方法三、与四元数和平移向量的转换四、左乘与右乘 Eigen::Isometry3d变换矩阵的常用方法 一、基本定义 变换矩阵本质是一个4*4的矩阵 Eigen::Isometry3d T_imu_to_lidar Eigen::Isometry3d::Identity()二、…

分数限制下,选好专业还是选好学校?

1.专业解析 探讨不同专业的优势和未来挑战&#xff08;课程学习、就业等维度&#xff09;。结合个人专业选择的经验和思考过程&#xff0c;自定义实际场景并给出不同场景下的“专业VS学校”选择方案。 当探讨不同专业的优势和未来挑战时&#xff0c;需要根据具体的专业领域和市…

手把手教你使用OpenCV和KNN算法进行手写数字识别

手把手教你使用OpenCV和KNN算法进行手写数字识别 在这篇博客中&#xff0c;我将向大家介绍如何使用OpenCV和KNN算法编写一个手写数字识别程序。我们将一步一步地解释每个步骤&#xff0c;确保大家能理解代码的每个细节。我们将通过一个具体的实例来演示&#xff0c;如何从图像…

【Python】 Stacking: 强大的集成学习方法

我们都找到天使了 说好了 心事不能偷藏着 什么都 一起做 幸福得 没话说 把坏脾气变成了好沟通 我们都找到天使了 约好了 负责对方的快乐 阳光下 的山坡 你素描 的以后 怎么抄袭我脑袋 想的 &#x1f3b5; 薛凯琪《找到天使了》 在机器学习中&#xff0c;单…

vscode 终端无法正常执行脚本命令如何解决

我们经常需要在vscode的中安装第三方依赖包&#xff0c;npm是前端目前最大的Node.js模块化管理系统&#xff0c;它能帮助开发者管理和发布Node.js模块。但很多时候我们在vscode的终端中执行npm install命令时经常会报以下错误&#xff1a; 但是在Windows的cmd命令提示符中执行n…

JavaScript妙笔生花:打造沉浸式中国象棋游戏体验

前言 随着信息技术的飞速发展&#xff0c;Web开发领域也出现了翻天覆地的变化。JavaScript作为前端开发中不可或缺的编程语言&#xff0c;其重要性不言而喻。而当我们谈论到利用JavaScript打造一款沉浸式的中国象棋游戏体验时&#xff0c;我们不仅仅是在开发一个游戏&#xff0…

在 Linux/Debian/Ubuntu 上安装 LAMP: Linux、Apache、MySQL 和 PHP

在 Linux/Debian/Ubuntu 上安装 LAMP LAMP 代表 Linux、Apache、MySQL 和 PHP&#xff0c;是一种流行的开源 Web 开发平台&#xff0c;可以提供强大的服务器环境来运行动态网站和 Web 应用程序。本文将详细介绍如何在 Ubuntu 系统上安装和配置 LAMP。 步骤 1: 更新系统 在开…

微信分销商城小程序源码系统在线搭建 前后端分离 带完整的安装代码包以及搭建教程

系统概述 本微信分销商城小程序源码系统采用先进的前后端分离架构设计&#xff0c;前端使用Vue.js框架开发&#xff0c;后端则基于Spring Boot构建&#xff0c;确保了系统的高可维护性、扩展性和性能。系统集商品展示、在线交易、会员管理、分销推广、订单处理、数据统计等功能…

AIoT设备新一代高性能处理器瑞芯微RK3576,东胜物联RK3588等核心板定制开发

随着物联网、人工智能和嵌入式技术的不断发展&#xff0c;智能设备应用对芯片处理器的性能需求越来越高&#xff0c;以满足复杂的数据处理需求、实时性要求、复杂的算法运算和多任务处理能力。高性能的芯片可以为智能设备提供更强大的计算能力和更快速的响应速度&#xff0c;从…

Camtasia Studio 2024软件下载附加详细安装教程

amtasia Studio 2024是一款功能强大的屏幕录制和视频编辑软件&#xff0c;由TechSmith公司开发。这款软件不仅能够帮助用户轻松地记录电脑屏幕上的任何操作&#xff0c;还可以将录制的视频进行专业的编辑和制作&#xff0c;最终输出高质量的视频教程、演示文稿、培训课程等。 …

【Android】RecyclerView纵向倾斜滑动,触发ViewPage2横向滑动而导致的滑动冲突问题

问题描述 场景ViewPage2FragmentRecyclerView&#xff08;我的项目里RecycleView外层还套了一层SmartRefreshLayout&#xff09; 因ViewPage2滑动太灵敏&#xff0c;RecyclerView纵向倾斜滑动&#xff0c;触发ViewPage2横向滑动而导致的滑动冲突问题 解决方案&#xff1a; …

Google Earth Engine(GEE)——导出影像video到自己的Google硬盘当中

函数: Export.video.toDrive(collection, description, folder, fileNamePrefix, framesPerSecond, dimensions, region, scale, crs, crsTransform, maxPixels, maxFrames) Creates a batch task to export an ImageCollection as a video to Drive. The collection must on…

极简opencv操作xml文件

目标 修改xml文件&#xff0c;先产生一个临时文件&#xff0c;拷贝&#xff0c;修改&#xff0c;改名&#xff0c;使用opencv 非常简单地就可以搞定配置xml文件 code #include <opencv2/opencv.hpp> #include <iostream> #include <opencv2/core/utils/files…

2 程序的灵魂—算法-2.4 怎样表示一个算法-2.4.2 用流程图表示算法-【例 2.9】

将例 2.4 求 1-1/21/3-1/41/99-1/100 的算用流程图表示。 一个流程图包括&#xff1a; 1. 表示相应操作的框&#xff1b; 2. 带箭头的流程线&#xff1b; 3. 框内外必要的文字说明。