玩转Qt 2D绘图之仪表盘实例

在前面的《玩转 Qt 2D 绘图》系列文章中,已经介绍了 2D 绘图中常用的知识,本文主要通过一个汽车仪表盘的实例来综合应用前面所介绍知识点,并且还介绍了一些 Qt 绘图的常用技巧。 相关文章: 玩转Qt 2D绘图之坐标系 玩转Qt 2D绘图之画家的工具 玩转Qt 2D绘图之画家

Qt

谈一谈Qt的布局技巧

1. 手动拖放通过在 Qt Designer 中手动拖放控件,可以快速实现界面布局,如下图所示: 这种方式对初学者非常友好,可以快速上手开发一个界面,增加成就感。但我们需要知道,拖放布局不是 Qt 布局的全部,这种方式仅适合简单的界面布局。

Qt

玩转Qt 2D绘图之画家

在 Qt 2D 世界中,图形基本都由点、线、矩形、多边形、椭圆、圆、折线、曲线、文本、贴图等基本元素辅以着色而构成,而且 QPainter 类已经提供了这些元素的绘制方法,花点时间掌握这些方法,也就掌握了 Qt 2D图形控件的制作,余下的就是勤学多练、孰能生巧了。

Qt

玩转Qt 2D绘图之画家的工具

软件是对现实世界的抽象,在设计软件接口时通常也会参考现实世界来进行设计。 在现实世界中,画家使用画笔、画刷这些工具在宣纸上作画,而在 Qt 中,画家是 QPainter 对象(画家的大脑则是 QPaintEngine),纸张可以是 QPaintDevice 的任何子类对象,如 QWidget、QImage、QPixmap、QGLPixelBuffer 等;在 QPainter 选好纸张后,就可以使用画笔来勾勒物体的轮廓了,Qt 中的画笔是 QPen 对象;画完轮廓后,可能还需要使用画刷来填充轮廓,Qt 中的画刷是 QBrush 对象。

Qt

玩转Qt 2D绘图之坐标系

Qt中提供了强大的 2D 绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,主要基于 QPainter、QPaintDevice和 QPaintEngine 这三个类实现,其中: QPainter执行具体的绘图操作,QPainter 类提供了大量的GUI编程所需的函数,如drawLine、drawImage等。 QPaintDevice 是一个基类,提供绘图设备的抽象接口,它是一个二维空间的抽象,可以使用QPainter在其上进行绘制,常见的继承该类的绘图设备有QImage、QPixmap、QWidget、QOpenGLPaintDevice等。 QPaintEngine 提供了一些抽象接口,用于实现QPainter在不同的设备上进行绘制。QPaintEngine 由 QPaintDevice 创建并管理。

Qt

Qt自定义和美化菜单

在Qt中可以通过QSS对菜单进行样式设置,而且对于非标准菜单项我也可以通过自定义Widget的方法来实现,本文讲述在Qt中QMenu的使用方法。

Qt

Qt中图片按九宫格模式缩放

我们在缩放图片时,都期望能保持图片的原长宽比,因为这样可以防止图片变形,但往往事与愿违,有些时候我们没办法保持原图的长宽比不变,比如需要在保持图片高度不变的情况下,仅横向拉伸图片,此时就会导致图片变形。 为了解决这种问题,我们可以考虑使用九宫格模式进行图片的缩放。 九宫格模式就是将图片切分为九块(不强制切分的每一块必须等分),如下图所示,在图片缩放时,我们通常保持1、3、7、9四个顶点位置的图片不变,对2、4、5、6、8五个区域进行缩放。

Qt

QListWidget使用记录

1. 解决无法拖入文件到QListWidget一般而言,只需要做如下操作,QWidget即可支持拖入文件: 12345678setDragDropMode(QAbstractItemView::DropOnly); // 仅支持拖入文件// 重写dragEnterEvent,当拖入文件进入时被调用,可以在该函数中取消拖入操作void dragEnterEvent(QDragEnterEvent* e) override;// 重写dropEvent,当拖入文件并释放鼠标时被调用void dropEvent(QDropEvent* e) override; 但在执行上述操作后,我们拖入文件到QListWidget时,却只能收到dragEnterEvent事件,却无法收到dropEvent事件。

Qt

Qt静态库编译

使用Qt静态库违背了Qt的免费使用协议! 1. 编译编译Qt源码需要提前安装如下工具: nasm perl gperf win_flex_bison llvm python2 openssl

Qt

基于Qt的无边框窗体实现

Qt虽然提供了诸如 Qt::FramelessWindowHint 之类的属性可以移除窗体的边框,但是移除边框之后,窗体的一些默认行为同时也被移除了,如鼠标拖动改变大小、双击标题栏最大化等,这些行为需要开发者自己来实现。 本文主要介绍实现无边框窗体的几种方案,并在最后分享了作者实现的方案。 笔者认为,一个完美的无边框窗体解决方案需要支持如下功能: 支持通过使用鼠标拖拽来改变窗体位置和大小; 支持双击标题栏最大化窗体和还原窗体; 支持 Windows Areo Snap 特性; 支持系统阴影; 支持跨不同 DPI 的屏幕拖拽; 适应分辨率和 DPI 改变;

Qt

Qt加载字体文件

本文仅简单记录如何使用 Qt 加载外部字体文件,并遍历字体名称和样式名称。

Qt

QPixmap使用要点

本文记录在使用 QPixmap 时容易感到困惑和犯错的地方,方便自己查阅,亦希望能成人之美。

Qt
12