当前位置: 首页 > news >正文

Qt 2D绘图之三:绘制文字、路径、图像、复合模式

参考文章链接:
Qt 2D绘图之三:绘制文字、路径、图像、复合模式

绘制文字

除了绘制图形以外,还可以使用QPainter::darwText()函数来绘制文字,也可以使用QPainter::setFont()设置文字所使用的字体,使用QPainter::fontInfo()函数可以获取字体的信息,它返回QFontInfo类对象。在绘制文字时会默认使用抗锯齿

基本绘制

下面仍然在上一节的程序中进行代码演示,更改paintEvent()的内容如下:

void Widget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.drawText(100, 100, “qter.org-yafeilinux”);
}
这样就在(100, 100)的位置绘制了一个字符串。效果如下图所示。
在这里插入图片描述

控制文字的位置

我们先到QPainter的帮助文档页面,然后查看drawText()函数的重载形式,找到:

QPainter::drawText ( const QRectF & rectangle, int flags, const QString & text, QRectF * boundingRect = 0 )

第一个参数指定了绘制文字所在的矩形;
第二个参数指定了文字在矩形中的对齐方式,它由Qt::AlignmentFlag枚举类型进行定义,不同对齐方式也可以使用“|”操作符同时使用,这里还可以使用Qt::TextFlag定义的其他一些标志,比如自动换行等;
第三个参数就是所要绘制的文字,这里可以使用“\n”来实现换行;
第四个参数一般不用设置。

下面来看一个例子。为了更明显地看到文字在指定矩形中的位置,我们绘制出这个矩形。将paintEvent()函数更改如下:

void Widget::paintEvent(QPaintEvent *)
{QPainter painter(this);//设置一个矩形QRectF rect(50, 50, 300, 200);//为了更直观地看到字体的位置,我们绘制出这个矩形painter.drawRect(rect);painter.setPen(QColor(Qt::red));//这里先让字体水平居中painter.drawText(rect, Qt::AlignHCenter, "yafeilinux");
}

现在运行程序,效果如下图所示。
在这里插入图片描述
可用的对齐方式如下图所示。
在这里插入图片描述

使用字体

为了绘制漂亮的文字,可以使用QFont类来设置文字字体。大家也可以先在帮助文档中查看该类的介绍。下面将最常用的一些设置进行演示。

将paintEvent()函数更改如下:

void Widget::paintEvent(QPaintEvent *)
{QPainter painter(this);//设置一个矩形QRectF rect(50, 50, 300, 200);//为了更直观地看到字体的位置,我们绘制出这个矩形painter.drawRect(rect);painter.setPen(QColor(Qt::red));//这里先让字体水平居中painter.drawText(rect, Qt::AlignHCenter, "yafeilinux");//使用字体QFont font("宋体", 15, QFont::Bold, true);//设置下划线font.setUnderline(true);//设置上划线font.setOverline(true

相关文章:

Qt 2D绘图之三:绘制文字、路径、图像、复合模式

参考文章链接: Qt 2D绘图之三:绘制文字、路径、图像、复合模式 绘制文字 除了绘制图形以外,还可以使用QPainter::darwText()函数来绘制文字,也可以使用QPainter::setFont()设置文字所使用的字体,使用QPainter::fontInfo()函数可以获取字体的信息,它返回QFontInfo类对象…...

配置宝塔php curl 支持http/2 发送苹果apns消息推送

由于宝塔面板默认的php编译的curl未加入http2的支持,如果服务需要使用apns推送等需要http2.0的访问就会失败,所以重新编译php让其支持http2.0 编译方法: 一、安装nghttp2 git clone https://github.com/tatsuhiro-t/nghttp2.git cd nghttp…...

Redis服务配置文件 redis.conf 更新修改配置参数说明

场景: 在安装redis服务中,默认的配置项通常不能实际使用,需要修改一些配置参数 修改配置参数 1、拿到 redis.cnf 文件,此文件通常在 redis 项目源码的第一级目录下 2、修改配置内容,主要修改项如下 protect…...

Android 俩个主题的不同之处 “Theme.AppCompat vs android:Theme.Material.Light.NoActionBar”

这两种主题继承关系有明显的不同,具体区别如下: Theme.AppCompat vs android:Theme.Material.Light.NoActionBar Theme.AppCompat 是 AppCompat 支持库提供的主题,目的是提供向后兼容的支持,适用于较早版本的 Android&#xff08…...

Redis+Caffeine 多级缓存数据一致性解决方案

RedisCaffeine 多级缓存数据一致性解决方案 背景 之前写过一篇文章RedisCaffeine 实现两级缓存实战,文章提到了两级缓存RedisCaffeine可以解决缓存雪等问题也可以提高接口的性能,但是可能会出现缓存一致性问题。如果数据频繁的变更,可能会导…...

vscode ctrl+/注释不了css

方式一.全部禁用插件排查问题. 方式二.打开首选项的json文件,注释掉setting.json,排查是哪一行配置有问题. 我的最终问题:需要将 "*.vue": "vue",改成"*.vue": "html", "files.associations": { // "*.vue": &qu…...

《山海经》:北山

《山海经》:北山 北山一经单狐山求如山(水马:形状与马相似,滑鱼:背部红色)带山(䑏疏:似马,一只角,鵸鵌:状乌鸦五彩斑斓,儵鱼&#xff…...

oracle中删除指定前缀的表

近期接手做的项目,发觉数据库中有许多多余的表。究其原因,应该是同事贪图方便,将过去做过的项目复制粘贴,然后修修改改。包括数据库也是克隆过来的,然后又没有删除本项目多余的表,结果经过几个轮回&#xf…...

解决 Flutter Dio合并请求多个接口,如果一个接口500,那么导致其他请求不在执行

Flutter Dio如何自定义拦截异常 应用场景 我们一般会统一拦截DioExceptionType 如400,403,500 等错误 但有时候,有个地方合并请求多个接口,如果一个接口500,那么导致其他请求不在执行,因为统一拦截了500&…...

The selected directory is not a valid home for Go SDK

在idea里配置go语言的环境时,选择go语言的安装目录,一直提示这个 The selected directory is not a valid home for Go SDK后来查了一下,发现原来idea识别不出来 需要改一下配置文件,找到go环境的安装目录,我是默认安…...

基于云模型的车辆行驶速度估计算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于云模型的车辆行驶速度估计算法matlab仿真。在智能交通系统中,车辆行驶速度的准确估计对于交通流量监测、安全预警、自动驾驶辅助等方面具有极为重…...

MySQL有哪些日志?

MySQL主要有三种日志:undo log、redo log、binlog。前两种是InnoDB特有的,binlog是MySQL的Server层中的。 Buffer Pool buffer pool是MySQL的缓冲池,里面存储了数据页、索引页、undo页等(与数据库不一致的即为脏页)。…...

Axios:现代JavaScript HTTP客户端

在当今的Web开发中,与后端服务进行数据交换是必不可少的。Axios是一个基于Promise的HTTP客户端,用于浏览器和node.js,它提供了一个简单的API来执行HTTP请求。本文将介绍Axios的基本概念、优势、安装方法、基本用法以及如何使用Axios下载文件。…...

python学opencv|读取视频(一)灰度视频制作和保存

【1】引言 上一次课学习了用opencv读取图像,掌握了三个函数:cv.imread()、cv.imshow()、cv.imwrite() 相关链接如下: python学opencv|读取图像-CSDN博客 这次课我们继续,来学习用opencv读取视频。 【2】学习资源 首先是官网…...

【Rust WebAssembly 入门实操遇到的问题】

Rust WebAssembly 入门实操遇到的问题 什么是WebAssembly跟着教程走wasm-pack build error总结 什么是WebAssembly WebAssembly(简称Wasm)是一种基于堆栈的虚拟机的二进制指令 格式。Wasm 被设计为编程语言的可移植编译目标,支持在 Web 上部…...

掌握CMake中的变量:设置、使用及实际应用示例详解

掌握CMake中的变量:设置、使用及实际应用示例详解 在CMake中,变量的设置和使用是管理构建配置的核心部分,它使得项目配置更加灵活和动态。变量在CMake中用于保存各种数据,如路径、选项值或文件列表,可以在整个CMake配…...

React基础知识三 router路由全指南

现在最新版本是Router6和Router5有比较大的变化,Router5和Router4变化不大,本文以Router6的写法为主,也会对比和Router5的不同。比较全面。 安装路由 npm i react-router-dom基本使用 有两种Router,BrowserRouter和HashRouter&…...

[VUE]框架网页开发02-如何打包Vue.js框架网页并在服务器中通过Tomcat启动

在现代Web开发中,Vue.js已经成为前端开发的热门选择之一。然而,将Vue.js项目打包并部署到生产环境可能会让一些开发者感到困惑。本文将详细介绍如何将Vue.js项目打包,并通过Tomcat服务器启动运行。 1. 准备工作 确保你的项目能够正常运行,项…...

k8s Quality of Service

文章目录 QoS 分类规则QoS 类别影响创建 QoS 分类的案例1. Guaranteed QoS 示例示例 YAML 文件: 2. Burstable QoS 示例示例 YAML 文件: 3. BestEffort QoS 示例示例 YAML 文件: 4. 混合 QoS 示例(多个容器)示例 YAML …...

顶刊算法 | 鱼鹰算法OOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Maltab)

顶刊算法 | 鱼鹰算法OOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Maltab) 目录 顶刊算法 | 鱼鹰算法OOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Maltab)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实…...

如何高效使用Gofile下载器:从单文件到批量下载的完整指南

如何高效使用Gofile下载器:从单文件到批量下载的完整指南 【免费下载链接】gofile-downloader Download files from https://gofile.io 项目地址: https://gitcode.com/gh_mirrors/go/gofile-downloader Gofile下载器是一款专门用于从Gofile.io平台下载文件的…...

2026年GitHub Copilot平替评测

2026年GitHub Copilot平替评测:免费且能力更强的替代方案 GitHub Copilot曾凭借插件式生态成为主流AI编程助手,但2026年计费改革与功能短板让大量开发者转向平替。而Trae以98%代码生成准确率和永久免费策略,成为Copilot平替中最受认可的选择。…...

ARMv8调试状态下LDR指令未定义问题解析

1. 问题背景与现象分析在ARMv8-A架构的调试过程中,开发者经常会遇到一个令人困惑的现象:当外部调试器暂停核心执行后,向EDITR寄存器注入LDR X1, [X0]指令(机器码0xf9400001)时,Tarmac日志显示该指令被标记为…...

功能子图检测技术在集成电路设计中的应用与优化

1. 功能子图检测技术概述 在集成电路设计领域,功能子图检测是一项基础而关键的技术。简单来说,它就像是在一堆乐高积木搭建的复杂结构中,找出那些功能相同但拼法可能不同的组件模块。这项技术的核心任务是判断一个给定的子图Q是否是目标图G的…...

TrollInstallerX:iOS越狱生态的智能安装革命

TrollInstallerX:iOS越狱生态的智能安装革命 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 还在为复杂的越狱安装流程而烦恼吗?TrollInstallerX…...

Jenga框架双引擎设计:视频生成效率优化解析

1. Jenga框架核心设计解析Jenga视频生成框架的核心创新在于其双引擎设计:渐进式分辨率(ProRes)和动态块稀疏注意力(AttenCarve)。这两种技术协同工作,解决了Transformer架构在视频生成中的计算效率瓶颈。1.1 渐进式分辨率技术(ProRes)ProRes采用分阶段生…...

QQ音乐加密音频一键解密:qmcdump终极指南

QQ音乐加密音频一键解密:qmcdump终极指南 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 你是否曾为QQ音乐下…...

2026年研究生开题报告降AI攻略:开题报告AIGC超标4.8元一次过知网完整处理指南

2026年研究生开题报告降AI攻略:开题报告AIGC超标4.8元一次过知网完整处理指南 从AI率71%到5.9%,我用了一个晚上。研究生开题报告降AI完整经历。 核心工具:嘎嘎降AI(www.aigcleaner.com),4.8元&#xff0c…...

海光3330E工控机实战:工业边缘计算与国产x86平台部署指南

1. 项目概述:当工业智能化遇见“中国芯”最近在为一个工业视觉检测的项目选型硬件平台,客户的要求很明确:稳定、可靠、能长时间在产线恶劣环境下跑,还得有足够的算力处理实时图像分析。在对比了市面上常见的几款基于x86或ARM架构的…...

从一根线到稳定画面:深入解读HDMI TMDS差分信号的PCB设计要点(阻抗控制与端接电容)

从一根线到稳定画面:深入解读HDMI TMDS差分信号的PCB设计要点(阻抗控制与端接电容) 在4K/8K超高清视频逐渐普及的今天,HDMI接口作为消费电子领域最主流的数字视频传输标准,其信号完整性设计直接决定了最终画质表现。许…...