08.QT控件:QWidget

news2024/9/20 14:28:27

一、Widget 简介

        Widget 是 Qt 中的核⼼概念.。英⽂原意是 "小部件",我们此处也把它翻译为 "控件"。控件是构成⼀个图形化界⾯的基本要素。
        Qt 作为⼀个成熟的 GUI 开发框架, 内置了⼤量的常⽤控件。并且 Qt 也提供了 "⾃定义控件" 的能⼒,可以让开发者在现有控件不能满⾜需求的时候, 对现有控件做出扩展,,或者⼿搓出新的控件。

二、QWidget介绍

1. 简介

        在 Qt 中, 使⽤ QWidget 类表⽰ "控件",像按钮、视图、输⼊框、滚动条等具体的控件类,都是继承⾃ QWidget.。可以说, QWidget 中就包含了 Qt 整个控件体系中 通⽤的部分

2. 常用核心属性介绍

2.1 enabled

所谓 “禁用” 指的是该控件不能接收任何用户的输⼊事件,并且外观上往往是灰⾊的。
如果⼀个 widget 被禁用,则该 widget 的子元素也被禁用。

2.2 geometry

x 横坐标
y 纵坐标
width 宽度
height ⾼度

2.3 window frame的影响

(1)window frame简介
        window frame(窗口框架)通常指的是窗口的外部边框部分,包括窗口的标题栏、边框和窗口控制按钮(最小化、最大化、关闭按钮等)
(2)window frame的影响
        如果 widget 作为⼀个窗⼝ (带有标题栏,最⼩化,最⼤化,关闭按钮),那么在计算尺⼨和坐标的 时候就有两种算法,包含 window frame 和 不包含 window frame:
其中 x(),y(),frameGeometry(),pos(),move() 都是按照包含 window frame 的⽅式来计算的。
其中 geometry(),width(),height(),rect(),size() 则是按照不包含 window frame 的⽅式来计算的。
当然, 如果⼀个不是作为窗⼝的 widget , 上述两类⽅式得到的结果是⼀致的。

2.4 windowTitle

注意:上述设置操作针对不同的 widget 可能会有不同的⾏为。如果是顶层 widget (独⽴窗⼝),这个操作才会有效,如果是子widget,这个操作⽆任何效果。

2.5 windowIcon

注意:同 windowTitle,上述操作仅针对顶层 widget 有效。
2.5.1 QIcon图标类
        QIcon是 Qt 中用于表示图标的类。它用于加载、显示和管理图标,可以在按钮、工具栏、菜单等各种用户界面元素中使用。
(1)建议在栈上创建:QIcon本身是一个比较小的对象,创建目的是为了设置到某个QWidget内,QIcon本身是否释放不会影响图标最终的显示。
(2)QIcon不支持对象树机制,无法为其挂载父对象。
(3)创建方式:QIcon icon("图片路径");路径不要带中文;使用'/'或'\\'作为路径分隔。
2.5.2 qrc机制
使用QIcon("图片路径")加载图标,存在两个问题:
(1)需要确保图片所在的路径在目标用户机上存在;
(2)需要确保图片不会被丢失;
qrc机制就是从根本上解决上述两个问题:
(1)给项目引入一个额外的xml文件(后缀名使用.qrc表示);
(2)在这个xml中将要使用的图片导入进来,并在xml中进行记录;
(3)QT在编译项目时,会根据qrc中描述的图片信息,找到图片内容并取出图片的二进制数据;
(4)将二进制数据转换为C++代码,编译到最终的.exe中;
qrc缺点:
(1)无法导入太大的资源文件;
(2)使.exe程序更大;
qrc使用示例:
(1)新建Qt Resource File
(2)将图片导入qrc文件中
        1)创建“前缀”(Prefix)
        所谓的“前缀”可以理解为虚拟的目录,这个目录并没有在电脑上真实存在,而是由Qt抽象出来。
        2)将图片导入到资源文件中

        注意:需要确保导入的图片必须在.qrc文件的同级目录,或同级目录中的子目录中。看到如图中所示的虚拟目录和图片,则说明导入成功。

(3)使用qrc文件中的图片数据

        图片加载路径使用':'开头,即表示使用qrc中的图片资源。

        此时我们查看编译生成的文件中,并没有该图片,但是会多出一个qrc_xxxxx.cpp文件:

        打开这个文件,能够看到一个qt_resource_data数组,里面存储的就是Title1.jpg这个图片每个字节数据:

        当Qt项目进行编译时,这个cpp文件就会被一起编译到exe程序中,当exe程序运行时,图片数据也就同步被加载到了内存中,避免资源丢失情况。

2.6 windowOpacity(透明度)

        写一个简单的程序,每次减少或增加0.1不透明度,通过QDebug输出每次修改后的界面不透明度,会发现得到类似以下结果:

(1)增加到1时,继续增加将会维持为1不再改变;减少到0后,继续减少将会维持为0不再改变;
(2)真实的数值并没有严格的减少或增加0.1(C++中float类型遵守IEEE 754标准,存储和计算导致的精度丢失)

2.7 cursor(鼠标光标)

(1)通过ui界面修改控件cursor属性

(2)通过代码修改控件cursor属性

        Qt中内置的光标:

(3)设置自定义光标
①将图片导入qrc资源文件(参考2.5.2qrc机制)
②访问到图片:
        Qt中存在多种表示图片的对象,这里以QPixmap为例: QPixmap pixmap(":/image1.jpg");
③使用图片构造QCursor对象: QCursor cursor(pixmap);

注意:此时鼠标点击生效位置默认是图片的左上角

④设置光标热点位置: QCursor customCursor(cursorPixmap, hotX, hotY);
        热点:鼠标点击时,鼠标图标的响应位置
        hotX、hotY是热点相对于图标左上角原点位置,单位为像素
其他可控操作:
①缩放图片大小
QPixmap pixmap(":/image1.jpg");
pixmap = pixmap.scaled(100, 100);

注意:缩放不是修改图片本身,而是返回一个新的图片副本,所有需要重新赋值。

②免费图标获取推荐:阿里巴巴 矢量图标库

2.8 font

font:

QFont:

2.9 toolTip(悬停提示)

2.10 focusPolicy

设置控件获取到焦点的策略,比如某个控件能否用鼠标选中或者能否通过tab键选中。

Qt::FocusPolicy是一个枚举类型,取值如下:
        Qt::NoFocus:控件不会接收键盘焦点;
        Qt::TabFocus:控件可以通过Tab键接收焦点;
        Qt::clickFocus:控件在鼠标点击时接收焦点;
        Qt::strongFocus:控件可以通过Tab键和鼠标点击接收焦点(默认值);
        Qt::wheelFocus:类似于Qt::StrongFocus,同时控件也可以通过鼠标滚轮获取到焦点(新增的选项,一般很少使用)。

2.11 styleSheet

        QSS(Qt Style Sheets)是Qt框架中用于样式定义的机制,类似于CSS(Cascading Style Sheets)。它允许开发者通过类似于CSS的语法来自定义和控制Qt应用程序中UI元素的外观和风格,包括但不限于窗口、按钮、文本框等组件的背景、字体、边框、大小等属性。
        后续会详细介绍qss使用。

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

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

相关文章

C和C++实现stack的对比

本篇文章,我们将对比C语言和C实现栈的不同来体会C的魅力! 1.栈的介绍 栈(Stack)是一种常见的数据结构,它是一种特殊的线性表,只允许在一端进行数据的插入和删除操作。这一端通常被称为栈顶(Top…

移位操作符

目录 移位 >> --- 右移操作符 右移操作符代码的使用 代码验证 算术右移和逻辑右移 验证Visual Studio使用的是算术右移还是逻辑右移 逻辑右移 or 算术右移的代码验证 右移操作符对正整数有除2的效果&#xff08;除2是整数除法的除2&#xff09; 验证 << -…

Day3:203 移除链表元素 707设计链表 206反转链表

题目&#xff1a;206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* …

[数据集][目标检测]棉花检测数据集VOC+YOLO格式389张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;389 标注数量(xml文件个数)&#xff1a;389 标注数量(txt文件个数)&#xff1a;389 标注类别…

Excel如果将一个表格拆分为多个表格,文末另赠彩蛋!

前期分享如何用数据透视表将一个表格拆分成多个工作薄Excel一个表格拆分多个表格&#xff0c;你学会了吗&#xff1f; 今天刘小生分享另外一种&#xff0c;如果拆分成多个工作表格文件&#xff01; 如何将一个表格根据部门进行拆分成多个表格&#xff0c;再点对点发送给各部门…

浅析Vite本地构建原理

前言 随着Vue3的逐渐普及以及Vite的逐渐成熟&#xff0c;我们有必要来了解一下关于vite的本地构建原理。 对于webpack打包的核心流程是通过分析JS文件中引用关系&#xff0c;通过递归得到整个项目的依赖关系&#xff0c;并且对于非JS类型的资源&#xff0c;通过调用对应的loade…

宝宝早教电子图书 酷得电子方案

宝宝早教发声书是一种专为婴幼儿设计的图书&#xff0c;旨在通过有趣的图画和声音来吸引宝宝的注意力&#xff0c;帮助他们学习语言、认知和发展各种技能。这类书籍通常包括以下特点&#xff1a; 鲜艳的图画&#xff1a;发声书通常配有色彩鲜艳、形象生动的图画&#xff0c;以…

什么美业系统好用?美业门店收银系统源码分享、小程序展示

专业美业系统与普通系统相比&#xff0c;更加贴合美业门店的经营需求&#xff0c;提供了更全面、便捷、高效的管理功能&#xff0c;有助于提升门店的服务质量和经营效益。 博弈美业系统包括PC、iPad、手机、小程序四大端口&#xff0c;满足不同人群的各种需求。客户可从小程序…

使用Leaflet和瓦片地图实现离线地图的技术指南

引言 在现代的Web应用中&#xff0c;地图服务扮演着越来越重要的角色。然而&#xff0c;在一些特殊环境下&#xff0c;如偏远地区或网络环境不稳定的情况下&#xff0c;依赖在线地图服务可能会受到限制。因此&#xff0c;实现离线地图功能成为了一个重要的需求。本文将介绍如何…

Jenkins定时构建自动化(四):Python 的 argparse 模块

目录 一、主要功能和用途 二、核心类和方法 三、总结 四、argparse模块示例 Jenkins定时构建自动化(一)&#xff1a;Jenkins下载安装配置-CSDN博客 Jenkins定时构建自动化(二)&#xff1a;Jenkins的定时构建-CSDN博客 Jenkins定时构建自动化(三)&#xff1a;手动定时构建…

【服务器08】之【游戏框架】之【加载主角】

首先简单了解一下帧率 FixedUpdate( ) > Update( ) > LateUpdate( ) 首先FixedUpdate的设置值 默认一秒运行50次 虽然默认是0.02秒&#xff0c;但FiexedUpdate并不是真的0.02秒调用一次&#xff0c;因为在脚本的生命周期内&#xff0c;FixedUpdate有一个小循环&…

嵌入式开发板屏幕显示汉字

一、实验目的 1&#xff0e;编写能够在嵌入式开发板LCD上显示汉字的程序&#xff1b; 2&#xff0e;在Ubuntu系统中编译上述程序生成可执行文件&#xff1b; 3&#xff0e;到开发板中验证。 二、实验步骤 1. Ubuntu系统上编写验证程序 Ubuntu系统上编写的验证程序如下&…

【亲测好用】神级PSAI插件大揭秘:三款创成式修图神器,让你解放双手

PsBeta被停用后&#xff0c;小编一直想找到能够平替PsBeta创成式填充功能的插件。 功夫不负有心&#xff0c;终于被我找到啦&#xff0c;现在就给大家揭秘这三款宝藏修图神器&#xff0c;希望能够帮到大家。 1.插件名称&#xff1a;Starai 无需科学上网&#xff0c;还自带提示…

文库小程序搭建部署:实现资源共享正向反馈

文档库相信大家应该不陌生&#xff0c;日常我们的工作模板、会议模板、求职时的简历模板、教育界的教学模板等来源方式都出自于文档库&#xff0c;随着互联网的发展和工作需求&#xff0c;文档模板开启了新型的知识变现新途径&#xff0c;通过文库小程序&#xff0c;我们不仅能…

RS-485和RS-422通信的3.3V低功耗收发器MAX3483

描述 多数公司的MAX3483速率为&#xff1a;250kbps&#xff1b; Analog Devices公司的MAX3483速率为10Mbps。 国产MAX3485外观和丝印 该MAX3483ESA为15kV ESD保护、3.3V、低功耗收发器&#xff0c;用于RS-485和RS-422通信。 每个设备包含一个驱动器和一个接收器。 该MAX3483E…

0624_ARM1

思维导图&#xff1a;

10分钟安装好torch的GPU版本(Windows)

pytorch-gpu 1. 确定cuda版本2. 确定Python版本3 开始下载-cu118-cp383.1 下载cuda3.2 下载torchvision 4.下载好了5.开始安装6. 开始验证 1. 确定cuda版本 nvcc -V 版本为11.8 , 一会下载的版本为cu118 2. 确定Python版本 确定python版本为为3.8&#xff0c;一会下载为cp38 3 …

Web自动化介绍以及8种元素定位方式

自动化理论 回归测试&#xff1a; 在进行软件升级、修改或修复bug后&#xff0c;对系统进行回归测试&#xff0c;以确保修改过的部分没有引入新的问题或破坏其他功能。回归测试通常是自动化执行的&#xff0c;并且可以通过比较测试前后的结果来确定系统的稳定性。 压力测试&am…

Android Studio 编译无错误 运行无结果一例

好长时间没写Android 代码了&#xff0c;基本规则也忘了。终于在编译成功了&#xff0c;然而运行毫无结果&#xff0c;debug跟踪断点也没有触发。屏幕赫然写着&#xff0c;execute successfully! 。 进行了各种检查&#xff0c;毫无进展。最后&#xff0c;试着重启一下AS&#…

APP启动流程

文章目录 主要构成详细启动流程参考链接 主要构成 App的启动流程主要涉及几个关键步骤和组件的交互&#xff0c;包括Launcher进程、ActivityManagerService&#xff08;AMS&#xff09;、Zygote进程、以及App进程本身。以下是详细的启动流程&#xff1a; 用户操作&#xff1a;…