Qt 5.14.2 学习记录 —— 칠 QWidget 常用控件(2)
文章目录
- 1、Window Frame
- 2、windowTitle
- 3、windowIcon
- 4、qrc机制
- 5、windowOpacity
1、Window Frame
在运行Qt程序后,除了用户做的界面,最上面还有一个框,这就是window frame框。对于界面的元素,它们的原点是Qt界面的左上角或window frame左上角。比如geometry(),setGeometry()是以界面左上角为原点,而frameGeometry()和setFrameGeometry()是以window frame左上角为原点的。

#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QRect rect1 = this->geometry();QRect rect2 = this->frameGeometry();qDebug() << rect1;qDebug() << rect2;}
代码在构造函数,那么如果运行直接就看,还在构造阶段,还看不到两个实际的区别。运用到对象上就看出来了。
// widget.h
class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void handle();private:Ui::Widget *ui;
};// widget.cpp
#include <QPushButton>
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QPushButton* button = new QPushButton(this);button->setText("按钮");button->move(330, 250);connect(button, &QPushButton::clicked, this, &Widget::handle);
}void Widget::handle()
{QRect rect1 = this->geometry();QRect rect2 = this->frameGeometry();qDebug() << rect1;qDebug() << rect2;
}
2、windowTitle
只针对顶层窗口适用。修改窗口标题

拖一个按钮到界面,改一下槽函数
void Widget::on_pushButton_clicked()
{this->setWindowTitle("窗口标题");
}
3、windowIcon
只针对顶层窗口适用。修改窗口图标

QIcon就是一个图标。设置图标需要在本地存一个图片,但是路径不带中文,并且不写反斜杠\,会被当成转义字符。要么/,要么\。也可以用C++11的raw string来解决,即r(),括号里直接写原路径即可,
#include <QIcon>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 不在堆创建, 因为不需要依靠对象树来释放以及保障生命周期, 况且QIcon也不支持对象树// QIcon对象比较小, 设置到某个控件后它释放与否不影响图标显示QIcon icon("E:\\pexels-ithalu-dominguez-907485.jpg");this->setWindowIcon(icon);
}
也可以用相对机制。
4、qrc机制
给Qt项目引入一个额外的xml文件,后缀名为.qrc,在这个xml中把图片导入进去,并且在xml中记录。Qt在编译项目时,会根据qrc中描述的图片信息,找到图片内容,提取出图片的二进制数据,并转为C++代码,最终编译到exe中。最终代码里可以看到很大的char数组,就是图片的二进制数据。不过这样肯定就不能往qrc里导入太大资源了。
新建一个.qrc的项目


会自动在resource后面加上.qrc。

创建完成后出现这个画面:

把图片导入到qrc文件中,下面有图片显示。
1、创建前缀,意思是创建一个虚拟目录,为了Qt能够方便地访问到这个图片。点击Add Prefix:

2、导入图片,图片的路径必须在此qrc文件的同级目录或子目录下,点击Add Files,选择文件即可

3、回到之前的项目,用qrc中的图片来作为图标
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 不在堆创建, 因为不需要依靠对象树来释放以及保障生命周期, 况且QIcon也不支持对象树// QIcon对象比较小, 设置到某个控件后它释放与否不影响图标显示//QIcon icon("E:\\pexels-ithalu-dominguez-907485.jpg");QIcon icon(":/pexels-ithalu-dominguez-907485.jpg");this->setWindowIcon(icon);
}
生成的实时文件中,会多出一个qrc_resource.cpp文件。qrc中导入的图片资源,就会转成这个文件。文件中每个二进制数字表示图片中每个字节的数据。Qt项目编译时,这个cpp文件被一起编译到了exe中,当exe程序运行时,图片的数据就加载到内存了。
5、windowOpacity
毛玻璃效果。

setWindowOpacity(float n)设置控件的不透明值。
拖两个按钮,一个加一个减
void Widget::on_pushButton_add_clicked()
{float opacity = this->windowOpacity();if(opacity >= 1.0) return;qDebug() << opacity;opacity += 0.1;this->setWindowOpacity(opacity);
}void Widget::on_pushButton_sub_clicked()
{float opacity = this->windowOpacity();if(opacity <= 0.0) return;qDebug() << opacity;opacity -= 0.1;this->setWindowOpacity(opacity);
}
不过我也可以不加if判定,因为超过1.0和小于0.0的浮点数,setWindowOpacity方法内部也有判定,这些数字不会被设定进去。不过为了好的编写习惯,还是要写上判断。
结束。
相关文章:
Qt 5.14.2 学习记录 —— 칠 QWidget 常用控件(2)
文章目录 1、Window Frame2、windowTitle3、windowIcon4、qrc机制5、windowOpacity 1、Window Frame 在运行Qt程序后,除了用户做的界面,最上面还有一个框,这就是window frame框。对于界面的元素,它们的原点是Qt界面的左上角或win…...
在vue3项目中利用自定义ref实现防抖
一,效果展示 自定义ref实现防抖效果 二,代码部分 1在app.vue中 <template><input v-model"text"/><p class"result">{{text}}</p> </template><script setup> import {debounceRef} from ./u…...
服务器及MySQL安全设置指南
文章目录 Linux安全配置1、密码复杂度策略2、登陆失败策略3、登录超时策略4、安全日志记录5、账户策略5.1 创建系统管理员(应该对/var进行授权,修改可能会影响到ssh登录)5.2 创建安全管理员(应该对/etc进行授权)5.3 创…...
MDX语言的网络编程
MDX语言的网络编程探索 引言 在当今信息技术快速发展的时代,网络编程越来越成为软件开发的重要组成部分。无论是为了创建Web应用,还是为了开发与云服务交互的程序,网络编程的知识愈发显得重要。MDX(Multidimensional Expression…...
client-go中watch机制的一些陷阱
Reference https://stackoverflow.com/questions/51399407/watch-in-k8s-golang-api-watches-and-get-events-but-after-sometime-doesnt-get-an 问题描述 最近在使用 client-go 的 watch 机制监听 k8s 中的 deployment 资源时,发现一个奇怪的现象 先看下代码&a…...
Chrome访问https页面显示ERR_CERT_INVALID,且无法跳过继续访问
在访问网页的时候,因为浏览器自身的安全设置问题, 对于https的网页访问会出现安全隐私的提示, 甚至无法访问对应的网站,尤其是chrome浏览器, 因此本文主要讲解如何设置chrome浏览器的设置,来解决该问题&…...
Jenkins pipeline 发送邮件及包含附件
Jenkins pipeline 发送邮件及包含附件 设置邮箱开启SMTP服务 此处适用163 邮箱 开启POP3/SMTP服务通过短信获取TOKEN (保存TOKEN, 后面Jenkins会用到) Jenkins 邮箱设置 安装 Build Timestamp插件 设置全局凭证 Dashboard -> Manage Jenkins …...
怎么把word试题转成excel?
在教育行业、学校管理以及在线学习平台中,试题库的高效管理是一项核心任务。许多教育工作者和系统开发人员常常面临将 Word 中的试题批量导入 Excel 的需求。本文将详细介绍如何快速将试题从 Word 转换为 Excel,帮助您轻松解决繁琐的数据整理问题&#x…...
【机器学习】量子机器学习:当量子计算遇上人工智能,颠覆即将来临?
我的个人主页 我的领域:人工智能篇,希望能帮助到大家!!!👍点赞 收藏❤ 在当今科技飞速发展的时代,量子计算与人工智能宛如两颗璀璨的星辰,各自在不同的苍穹闪耀,正以前…...
IDEA配置maven和git并如何使用maven打包和git推送到gitlab
首先找到设置 在里面输入maven然后找到点击 然后点击右边两个选项 路径选择下载的maven目录下的settings文件和新建的repository文件夹 点击apply应用 然后在搜索框里搜git点击进去 此路径为git的exe执行文件所在目录,选好之后点击test测试下方出现git版本号表…...
Supermaven 加入 Cursor:AI 编码新篇章
引言 2024 年 11 月 11 日,我们迎来了一个激动人心的时刻——Supermaven 正式加入 Cursor! 这一合作标志着 AI 编程工具进入了一个新的发展阶段,为开发者提供更智能、更高效的编码体验。本文将带您了解此次合并的背景、意义以及未来的发展方…...
【2024华为OD-E卷-100分-boss的收入】(题目+思路+JavaC++Python解析)
题目描述 题目:boss的收入 在一个公司中,有一个老板(boss)和若干名员工(employees)。老板和员工的收入信息存储在一个数组中,其中数组的每个元素表示一个人的收入。数组的第0个元素表示老板的…...
《Java8实战》汇总
参考书籍:《Java8 实战》 一、Lambda表达式 Lambda 是一个匿名函数。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。 1.1、Lambda表达式的关键:从匿名类到 Lambda 的转换 示例: <span style="background-color:#…...
Elasticsearch:搜索相关性
这里写目录标题 一、相关性的概述二、自定义评分策略1、TF-IDF算法2、BM25算法 三、自定义评分策略1、Index Boost:在索引层面修改相关性2、boosting:修改文档相关性3、negative_boost:降低相关性4、function_score:自定义评分5、…...
LeetCode 热题 100_二叉树展开为链表(46_114_中等_C++)(二叉树;先序遍历(递归+数组);先序遍历(递归))
LeetCode 热题 100_二叉树展开为链表(46_114) 题目描述:输入输出样例:题解:解题思路:思路一(先序遍历(递归数组)):思路二(先序遍历&am…...
uniapp实现在card卡片组件内为图片添加长按保存、识别二维码等功能
在原card组件的cover属性添加图片的话,无法在图片上面绑定 show-menu-by-longpress"true"属性,通过将图片自定义添加可使用该属性。 代码: <uni-card title"标题" padding"10px 0" :thumbnail"avata…...
最好用的图文识别OCR -- PaddleOCR(2) 提高推理效率(PPOCR模型转ONNX模型进行推理)
在实际推理过程中,使用 PaddleOCR 模型时效率较慢,经测试每张图片的检测与识别平均耗时超过 5 秒,这在需要大规模自动化处理的场景中无法满足需求。为此,我尝试将 PaddleOCR 模型转换为 ONNX 格式进行推理,以提升效率。…...
Redis--20--大Key问题解析
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 大Key问题1.什么是 Redis 大 Key?在 Redis 中,大 Key 是指单个键值对的数据量非常大,可能包含大量数据。 2. Redis大Key的危害3.…...
新版2024AndroidStudio项目目录结构拆分
如题 下载了最新版的android studio 发现目录结构和以前不一样 自动帮你合并了 如何层层抽丝剥茧呢 按照一下步骤即可解决问题!...
STM32内置Flash
一、原理 利用flash存储用户数据需要注意查看,用户数据是否会覆盖芯片运行程序。 IAP(在程序中编程)利用程序修改程序本身,和OTA是一个原理。IAP在程序中编程支持任意一种通信下载。 ICP(在电路中编程,通…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
comfyui 工作流中 图生视频 如何增加视频的长度到5秒
comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...
Mysql故障排插与环境优化
前置知识点 最上层是一些客户端和连接服务,包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念,为通过安全认证接入的客户端提供线程。同样在该层上可…...
工厂方法模式和抽象工厂方法模式的battle
1.案例直接上手 在这个案例里面,我们会实现这个普通的工厂方法,并且对比这个普通工厂方法和我们直接创建对象的差别在哪里,为什么需要一个工厂: 下面的这个是我们的这个案例里面涉及到的接口和对应的实现类: 两个发…...
Netty自定义协议解析
目录 自定义协议设计 实现消息解码器 实现消息编码器 自定义消息对象 配置ChannelPipeline Netty提供了强大的编解码器抽象基类,这些基类能够帮助开发者快速实现自定义协议的解析。 自定义协议设计 在实现自定义协议解析之前,需要明确协议的具体格式。例如,一个简单的…...
