Qt 绘制拖动刻度尺
本着一切皆可painter的原则,绘制一个拖动改变的刻度尺。
首先,鼠标事件中,获取鼠标拖动的坐标。
void StrechRuler::mouseMoveEvent(QMouseEvent *event)
{if((150 <= event->pos().x()) && (event->pos().x()<= 650)){curPositionX = event->pos().x()-150;qDebug()<<"X:"<<event->pos().x();}if( (210 <= event->pos().y()) && (event->pos().y() <= 310)){curPositionY = event->pos().y();qDebug()<<"Y:"<<event->pos().y();}repaint();
}
绘制尺子的具体实现:
void StrechRuler::paintEvent(QPaintEvent *event)
{QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing, true);painter.save();painter.setPen(QPen(QColor(85, 170, 255),1));painter.setBrush(QBrush(QColor(85, 170, 255)));painter.drawRect(150,210,curPositionX,100);painter.restore();int sScale = 5;int lScale = 25;int sScaleCount = curPositionX / sScale + 1;int lScaleCount = curPositionX / lScale + 1;painter.setPen(QPen(QColor(255,255,255),1));for(int i=0; i<sScaleCount; i++){if(i % 5 != 0){painter.drawLine(QPoint(150+i*5,210),QPoint(150+i*5,215));}}for(int j=0; j<lScaleCount; j++){painter.drawLine(QPoint(150+j*25,210),QPoint(150+j*25,225));}QFont fontTest("宋体", 6, QFont::Bold,true);painter.setFont(fontTest);painter.setPen(QPen(QColor(255,255,255),1));for(int i = 0; i< lScaleCount; i++){painter.drawText(QPoint(150+i*25,230),QString::number(i*5));}}
注意事项:
- repaint()或者update()非常重要,既然是鼠标拖拽而展示刻度尺,那么要对painter进行及时的刷新。
- 在绝大多数情况下,update()更好,因为它允许Qt来优化速度并且防止闪烁。
- curPositionX / sScale + 1和curPositionX / lScale + 1是为了多画几个刻度,避免尺子展开了而刻度不显示。
- if(i % 5 != 0)是把第5个短刻度取消掉,避免短刻度和长刻度重叠显示。
Qt 绘制拖动刻度尺相关推荐
- qt绘制网络拓补图(连接数据库,递归函数,无限绘制,可拖动节点)
硬件:ThinkPadT590 系统:Win10 数据库:sqlserver2014 Qt:5.14.1 QtCreator:4.11.1 源码连接: qt绘制网络拓补图(连接数据库,递归函数,无限绘 ...
- 使用Qt绘制一个简约美观的界面 【使用QSS简单美化】(笔记)
文章目录 使用Qt绘制一个简约美观的界面-使用QSS简单美化 基本控件布局 界面的简单美化 QSS 添加图片 使用Qt绘制一个简约美观的界面-使用QSS简单美化 基本控件布局 以绘制登录界面为例,创建 ...
- 9.如何使用QT绘制导航箭头的图标
利用QT绘制一个地图导航软件中的导航图标,代码如下 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QLa ...
- QT绘制带有数据源的图表
QT绘制带有数据源的图表 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 QML将XmlListModel用作图表的数据源. 项目技术 qt5.12,qt chart ...
- QT绘制散点图(1)
QT绘制散点图1 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 创建一个简单的散点图以及如何与该图进行交互. 项目技术 qt5.12,qt charts模块,C++ ...
- QT绘制散点图(2)
QT绘制散点图2 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 创建简单的散点图. 项目技术 qt5.12,qt charts模块,C++ 项目展示 主要源码片段解 ...
- QT绘制嵌套的圆饼状图
QT绘制嵌套的圆饼状图 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 使用QPieSeries API创建嵌套的甜甜圈图. 项目技术 qt5.12,qt chart ...
- QT绘制百分比条形图。
QT绘制百分比条形图 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 创建简单的百分比条形图. 百分比条形图将数据集中显示为每个类别中所有数据集的百分比. 创建百分比 ...
- QT绘制具有向下钻取效果的园饼图
QT绘制具有向下钻取效果的园饼图 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 实现具有向下钻取效果的饼图. 项目技术 qt5.12,qt charts模块,C++ ...
最新文章
- mask - 使用 * 遮蔽字符串
- 钉钉微应用的开发——主前端
- Innovation Factory Open Day
- 前端学习(3105):react-hello-jsx语法规则
- HDU 1495(非常可乐)
- 微博抽奖贴为什么到时间了不开奖_热搜第一!微博闹剧,锦鲤“信小呆”被这样处罚...
- Bailian2936 试剂配制【标记+逻辑】
- description方法 oc 就是NSLog使用
- 嵌入式工具——tcpdump
- go Test Benchmark 性能测试
- 在OS X中使用Homebrew
- viper12a电源电路图_viper12a引脚功能图与引脚电压
- canvas绘制圆形头像
- c语言average的用法,平均函数average的一般和不一般的用法
- Maven Resources Plugin的Filtering功能的Bug
- 数据分析之EXCL筛选多列相同的数据(满足多列条件的数据)进行处理
- ubuntu下安装网易云音乐
- 生成式对抗网络(GAN)实战——书法字体生成练习赛
- 淘宝客引流的两个高效渠道
- ESP32超详细学习记录:NTP同步时间
热门文章
- debug : 应用程序无法正常启动(0xc000007b)
- 是时候该学会 MMDetection 进阶之非典型操作技能(一)
- Windows编程-创建窗口
- 数据库实验三 嵌套查询和视图操作
- Linux kali无线安全之WPA/WPA2握手包捕获与爆破
- 美团后台篇中的ReentrantLock
- NOIP2017提高组总结
- 手动实践3-把握移动端字体设计的七大准则
- 读取obj+mtl 文件 (OpenGL C++)
- 在 VMware Workstation 16 Pro 中安装 Ubuntu Server 22.04.1 并配置静态 IP 地址