【QT】常用控件(一)

在这里插入图片描述

个人主页~


常用控件

  • 一、控件是什么
  • 二、QWidget核心属性
    • 1、enabled
    • 2、geometry
    • 3、windowTitle
    • 4、windowIcon
    • 5、windowOpacity
    • 6、cursor
    • 7、font
    • 8、toolTip
    • 9、focusPolicy
    • 10、styleSheet

一、控件是什么

ui设计界面左边的这些都叫控件,除了这些以外,QT还允许自定义控件,满足不同的需求
在这里插入图片描述

二、QWidget核心属性

1、enabled

API说明
isEnabled获取到控件的可用状态
setEnabled设置控件是否可用

我们来写一个用一个按钮控制另一个按钮可用状态的QT程序

我比较喜欢用ui界面转到槽的方式写QT程序

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_control_clicked()
{if(ui->pushButton->isEnabled() == true)ui->pushButton->setEnabled(false);elseui->pushButton->setEnabled(true);
}void Widget::on_pushButton_clicked()
{qDebug() << "可以使用";
}

当将控件设置为不可用时,颜色偏暗淡,不可点击

enabled

2、geometry

API说明
geometry()获取到控件的位置和尺寸,返回的结果是QRect,包含x,y,width,height,其中x和y是左上角坐标
setGeometry(QRect) / setGeometry(int x,int y,int width,int height)设置空间的位置和尺寸,分为两种方式

geometry在中文里是几何的意思,表示一个物体的几何性质,它有四个参数以表示空间的几何性质,左上角的坐标x,y以及控件的宽度和高度

geometry_1

geometry_2

第一个视频仅控制左上角坐标,这样会导致width和height跟着变化,因为我们用的是setX和setY,强制改变了左上角坐标
第二个视频的效果也可以直接使用move函数进行控制

这里还有一个有趣的程序

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{ui->label->setText("感谢导员,我出去玩了");
}void Widget::on_pushButton_2_clicked()
{int width = this->geometry().width();//获取窗口宽度int height = this->geometry().height();//获取窗口高度int x = rand() % width;int y = rand() % height;//保证按钮在窗口内//这里用的moveui->pushButton_2->move(x, y);}

geometry_3

我们知道,窗口都会带有下面红色方框中的内容,这个东西叫做window frame,我们在使用geometry的时候的x,y是不包含这个的,要想使用window frame的左上角就要用frameGeometry这个函数
在这里插入图片描述
通过geometry和frameGeometry就可以实现整个窗口以及控件的移动操作,但是我们有很多的API,虽然设计的比较冗余,但是QT一个特点就是尽量符合人的直觉,就是我们有可能不用通过官方文档就能把程序写对

3、windowTitle

API说明
windowTitle获取到控件的窗口标题
setWindowTitle(const QString& title)设置控件的窗口标题

在这里插入图片描述

4、windowIcon

API说明
windowIcon()获取到控件的窗口图标,返回QIcon对象
setWindowIcon(const QIcon& icon)设置控件的窗口图标

在这里插入图片描述
在这里插入图片描述
窗口和任务栏图标都会变成设置成的照片

但是我们一般不会通过文件的绝对路径引入照片,因为我们无法保证我D盘中的图片在你的D盘当中也有,我们还有两种办法,一种是相对路径,另一种是使用qrc,相对路径的方法就是在该项目的工作目录中建一个新的文件夹用来专门存放图片,比如文件夹的名字叫做photo,当我们需要使用时写"./photo/slm.jpg",但是这样的话还是会因为用户误删而导致照片无法使用,这时对于这种图片一类的小文件,我们可以使用qrc来直接将图片转化为二进制代码存储在项目当中,这样就永远不会丢失了

右键点击Add New,选择Qt resource file,起一个英文名字,这里叫resource file
在这里插入图片描述

在这里插入图片描述
点击Add Prefix,将前缀改为/
在这里插入图片描述
然后点击Add Files,将要加入的图片放到qrc文件的同级目录中,下面是添加完毕的效果
在这里插入图片描述
在代码中这样使用:
在这里插入图片描述
这里的 : 作为开头,表示从qrc中读取资源
这里的 / 是上面配置的前缀
这里的 slm.jpg 是资源名称

qrc适合管理小的资源,对图片类的很有效,不过对于视频一类的大资源是不行的,因为这会导致exe文件也变大

5、windowOpacity

API说明
windowOpacity()获取到控件的不透明数值,返回float,取值为0.0~1.0,0.0表示透明,1.0表示完全不透明
setWindowOpacity(float n)设置控件的不透明数值

opacity_1

6、cursor

API说明
cursor()获取到当前widget的cursor属性,返回QCursor对象,当鼠标悬停在该widget上时,就会显示出对应的形状
setCursor(const QCursor& cursor)设置该widget光标的形状,仅在鼠标停留在该widget上时生效
QGuiApplication::setOverrideCursor(const QCursor& cursor)设置全局光标的形状,对整个程序中的所有widget都会生效,覆盖上面的setCursor设置的内容

我们可以直接通过属性栏来控制,也可以使用代码控制
在这里插入图片描述

cursor_1

代码版本:
在这里插入图片描述

cursor_2

这是系统内置的所有光标形状,是以一个枚举体来存储的
在这里插入图片描述
我们来将光标改变为自定义图片

首先使用qrc将图片加载进去,步骤如同上文,不再赘述,然后定义一个位图对象加载并缩放图片,然后将图片设置为光标形状

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QPixmap pixmap(":/slm.jpg");//创建位图对象并加载自定义图片pixmap = pixmap.scaled(32,32);//缩放图片为32*32QCursor cursor(pixmap,3,3);//这里的3,3是热点的位置,也就是点击时的有效位置this->setCursor(cursor);
}Widget::~Widget()
{delete ui;
}

cursor

7、font

API说明
font()获取当前widget的字体信息,返回QFont对象
setFont(const QFont& font)设置当前widget字体信息

这里的QFont有七种属性
family:字体
pointSize:字体大小
weight:字体粗细
bold:是否加粗
italic:是否倾斜
underline:是否有下划线
strikeOut:是否有删除线

我们可以通过属性面板直接设置
在这里插入图片描述
也可以通过代码和ui一起实现
在这里插入图片描述

8、toolTip

API说明
setToolTip设置toolTip,鼠标悬停时会有提示说明
setToolTipDuring设置toolTip提示的时间

toolTip

9、focusPolicy

API说明
focusPolicy()获取该widget的focusPolicy,返回Qt::FocusPolicy
setFocusPolicy(Qt::FocusPolicy)设置widget的focusPolicy

Qt::FocusPolicy是一个枚举类型,取值如下
在这里插入图片描述

enum FocusPolicy {NoFocus = 0,//控件不会接收键盘焦点TabFocus = 0x1,//控件可以通过Tab键接收焦点ClickFocus = 0x2,//控件在鼠标点击时接收焦点StrongFocus = TabFocus | ClickFocus | 0x8,//控件可以通过Tab键和鼠标点击接收焦点(默认)WheelFocus = StrongFocus | 0x4//在上一条的基础上增加鼠标滚轮获取焦点};

这个就不必多说了,只要是平常玩玩电脑的看完这些解释都就知道这个焦点的概念,虽然不好说出来,但是抽象的概念大家都是有的,当我们给控件设置这些枚举值时会达到对应的效果

10、styleSheet

通过QSS设置widget的样式,QSS是QT借鉴CSS的,只支持CSS其中的一部分
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当然这里的color不是只有我们认识的那几个单词的颜色,自然界的颜色有无数种,在计算机中,颜色是由一个个像素光点显示的,它通过RGB,也就是red,green,blue三种颜色的深浅来控制可以形成所有的颜色,对于8位深度的显示器来说,它们每一个颜色深度都是由一个字节来存储的,也就是说电脑能够呈现的颜色有256256256种,也就是1600多万种,对于更高规格的显示器这个数字会更多


今日分享就到这~

在这里插入图片描述

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

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

相关文章

竹壳天气时钟(二)第二阶段任务已完成

一、简介 准备用基于esp8266的nodemcu开发板做一个天气时钟。 一步一步记录代码编写过程。 竹壳天气时钟 Bamboo shell weather clock 使用基于esp8266的NodeMCU制作。 计划用竹子做最后成品的外壳&#xff0c;所以才有了这个名称。 第一阶段任务&#xff1a; 1.开启混合模式&…

2025推荐选题|基于MVC的农业病虫害防治平台的设计与实现

作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参与学生毕业答辩指导&#xff0c;…

Golang | Leetcode Golang题解之第477题汉明距离总和

题目&#xff1a; 题解&#xff1a; func totalHammingDistance(nums []int) (ans int) {n : len(nums)for i : 0; i < 30; i {c : 0for _, val : range nums {c val >> i & 1}ans c * (n - c)}return }

tkinter库的应用小示例:文本编辑器

tkinter库的应用小示例&#xff1a;文本编辑器 要 求&#xff1a; 创建一个文本编辑器&#xff0c;功能包括&#xff0c;创建、打开、编辑、保存文件。一个Button小组件&#xff0c;命名为btn_open,用于打开要编辑的文件&#xff0c;一个Button小组件&#xff0c;命名为btn_s…

【Ubuntu】“Linux版PhotoShop”绘图软件的安装和汉化

【Ubuntu】“Linux版PhotoShop”绘图软件的安装和汉化 零、前言 最近换了Linux系统&#xff0c;但是写教程做PPT的时候还是得用到绘图软件&#xff0c;上网一查&#xff0c;总结对比之后发现Krita比较好用&#xff0c;故此讲解一下如何安装和汉化Krita。 壹、安装 安装很简…

Unity中搜索不到XR Interaction Toolkit包解决方法

问题&#xff1a; 针对Unity版本2020.3在中PackageManager可能搜素不到XR Interaction Toolkit包 在Package Manager中未显示XR Interaction Toolkit包 解决方法&#xff1a; Package manager左上角&#xff0c;点加号&#xff0c;选择 Add package from git URL..&#xff0c;…

Mysql(2)—SQL语法详解(通俗易懂)

一、关于SQL 1.1 简介 SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是一种用于管理关系型数据库的标准编程语言。它主要用于数据的查询、插入、更新和删除等操作。SQL最初在1970年代由IBM的研究人员开发&#xff0c;旨在处理关系数据模型…

Pytorch基础:设置随机种子

相关阅读 Pytorch基础https://blog.csdn.net/weixin_45791458/category_12457644.html?spm1001.2014.3001.5482 有时候&#xff0c;如果需要代码在多个运行中具有可重复性&#xff0c;可以通过以下方式来设置随机种子&#xff1a; import torch import numpy as np import r…

qt+opengl 实现纹理贴图,平移旋转,绘制三角形,方形

1 首先qt 已经封装了opengl&#xff0c;那么我们就可以直接用了&#xff0c;这里面有三个函数需要继承 virtual void initializeGL() override; virtual void resizeGL(int w,int h) override; virtual void paintGL() override; 这三个函数是实现opengl的重要函数。 2 我们…

E: Unable to locate package:无法定位包的完美解决方法 ️

博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&#x1f466;&#x1f3fb; 《java 面试题大全》 《java 专栏》 &#x1f369;惟余辈才疏学浅&#xff0c;临摹之作或有不妥之处&#xff0c;还请读者海涵指正。☕&#x1f36d; 《MYSQL从入门到精通》数据库是开…

LabVIEW提高开发效率技巧----点阵图(XY Graph)

在LabVIEW开发中&#xff0c;点阵图&#xff08;XY Graph&#xff09; 是一种强大的工具&#xff0c;尤其适用于需要实时展示大量数据的场景。通过使用点阵图&#xff0c;开发人员能够将实时数据可视化&#xff0c;帮助用户更直观地分析数据变化。 1. 点阵图的优势 点阵图&…

树莓派应用--AI项目实战篇来啦-17.YOLOv8目标检测-安全帽检测

1. YOLOv8介绍 YOLOv8是Ultralytics公司2023年推出的Yolo系列目标检测算法&#xff0c;可以用于图像分类、物体检测和实例分割等任务。YOLOv8作为YOLO系列算法的最新成员&#xff0c;在损失函数、Anchor机制、样本分配策略等方面进行了全面优化和创新。这些改进不仅提高了模型的…

长芯微LSPGD1系列带气嘴DIP8封装集成表压传感器完全替代松下ADP51B62替代ADP51B62,成本更低!

描述 LSPGD1是长芯微针对家电医疗等市场推出的经过校准的表压传感器系列产品。该系列产品采用高性能信号调理芯片对MEMS压阻芯体输出进行温度和压力的校准和补偿&#xff0c;保证性能和可靠性的同时对封装进行了集成&#xff0c;易于使用。LSPGD1系列集成压力传感器可选量程为…

Java多线程之死锁(死锁产生条件、手写简单死锁程序、破坏死锁)(面试常有)

目录 一、死锁。 &#xff08;1&#xff09;实际生活"死锁"情景。 &#xff08;2&#xff09;程序中举例。 &#xff08;3&#xff09;死锁产生必要的条件。 <1> 互斥使用。 <2> 不可抢占。 <3> 请求和保持。 <4> 循环等待。 &#xff08;4&…

iOS 14 自定义画中画悬浮窗 Custom AVPictureInPictureController 实现方案

iOS 14&#xff0c;基于 AVPictureInPictureController&#xff0c;实现自定义画中画&#xff0c;涵盖所有功能与难点。 市面上的各种悬浮钟和提词器的原理都是基于此。 Demo源码在文末。 使用 iOS 画中画的要求&#xff1a; 真机&#xff0c;不能使用模拟器&#xff1b;iO…

starrocks-删除表字段

1、背景 之前做了个大宽表&#xff0c;将近100个字段&#xff0c;但是后来发现很多字段在实际生产上都没有用到&#xff0c;并且随着数据量的增加&#xff0c;给集群的存储以及消费任务的解析带来了比较大的压力。所以决定对字段做删除处理。 当前的表是使用routine load任务从…

hadoop全分布式搭建(三台虚拟机,一个主节点,两个从节点)

根据尚硅谷哔哩哔哩视频搭建&#xff1a;bilibili.com/video/BV1Qp4y1n7EN/ 安装虚拟机教程可参考&#xff1a;VMware虚拟机 安装 Centos7(linux)&#xff08;新手超详细教程&#xff09;_vmware安装centos7教程-CSDN博客 集群配置如下&#xff1a; 一、先配置一台虚拟机hadoo…

【计算机网络 - 基础问题】每日 3 题(三十八)

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞…

【华为HCIP实战课程七】OSPF邻居关系排错MTU问题,网络工程师

一、MTU MUT默认1500,最大传输单元,一致性检测 [R3-GigabitEthernet0/0/1]mtu 1503//更改R3的MTU为1503 查看R3和SW1之间的OSPF邻居关系正常: 默认华为设备没有开启MTU一致性检测! [R3-GigabitEthernet0/0/1]ospf mtu-enable //手动开启MTU检测 [SW1-Vlanif30]ospf mtu…

PCL点云处理之求法向量

求法向量干什么&#xff1f;将点渲染成面 1、一个点垂直于一个曲线的切线叫法线 2、在点云中取一块区域&#xff0c;用最小二乘将区域中的点云拟合成一个面&#xff08;贴合在曲面上的一个切面&#xff09;在相近的区域计算出n个这样的面&#xff0c;用这个面求出法向量&#…