本着一切皆可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 绘制拖动刻度尺相关推荐

  1. qt绘制网络拓补图(连接数据库,递归函数,无限绘制,可拖动节点)

    硬件:ThinkPadT590 系统:Win10 数据库:sqlserver2014 Qt:5.14.1 QtCreator:4.11.1 源码连接: qt绘制网络拓补图(连接数据库,递归函数,无限绘 ...

  2. 使用Qt绘制一个简约美观的界面 【使用QSS简单美化】(笔记)

    文章目录 使用Qt绘制一个简约美观的界面-使用QSS简单美化 基本控件布局 界面的简单美化 QSS 添加图片 使用Qt绘制一个简约美观的界面-使用QSS简单美化 基本控件布局 以绘制登录界面为例,创建 ...

  3. 9.如何使用QT绘制导航箭头的图标

    利用QT绘制一个地图导航软件中的导航图标,代码如下 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QLa ...

  4. QT绘制带有数据源的图表

    QT绘制带有数据源的图表 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 QML将XmlListModel用作图表的数据源. 项目技术 qt5.12,qt chart ...

  5. QT绘制散点图(1)

    QT绘制散点图1 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 创建一个简单的散点图以及如何与该图进行交互. 项目技术 qt5.12,qt charts模块,C++ ...

  6. QT绘制散点图(2)

    QT绘制散点图2 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 创建简单的散点图. 项目技术 qt5.12,qt charts模块,C++ 项目展示 主要源码片段解 ...

  7. QT绘制嵌套的圆饼状图

    QT绘制嵌套的圆饼状图 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 使用QPieSeries API创建嵌套的甜甜圈图. 项目技术 qt5.12,qt chart ...

  8. QT绘制百分比条形图。

    QT绘制百分比条形图 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 创建简单的百分比条形图. 百分比条形图将数据集中显示为每个类别中所有数据集的百分比. 创建百分比 ...

  9. QT绘制具有向下钻取效果的园饼图

    QT绘制具有向下钻取效果的园饼图 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 实现具有向下钻取效果的饼图. 项目技术 qt5.12,qt charts模块,C++ ...

最新文章

  1. mask - 使用 * 遮蔽字符串
  2. 钉钉微应用的开发——主前端
  3. Innovation Factory Open Day
  4. 前端学习(3105):react-hello-jsx语法规则
  5. HDU 1495(非常可乐)
  6. 微博抽奖贴为什么到时间了不开奖_热搜第一!微博闹剧,锦鲤“信小呆”被这样处罚...
  7. Bailian2936 试剂配制【标记+逻辑】
  8. description方法 oc 就是NSLog使用
  9. 嵌入式工具——tcpdump
  10. go Test Benchmark 性能测试
  11. 在OS X中使用Homebrew
  12. viper12a电源电路图_viper12a引脚功能图与引脚电压
  13. canvas绘制圆形头像
  14. c语言average的用法,平均函数average的一般和不一般的用法
  15. Maven Resources Plugin的Filtering功能的Bug
  16. 数据分析之EXCL筛选多列相同的数据(满足多列条件的数据)进行处理
  17. ubuntu下安装网易云音乐
  18. 生成式对抗网络(GAN)实战——书法字体生成练习赛
  19. 淘宝客引流的两个高效渠道
  20. ESP32超详细学习记录:NTP同步时间

热门文章

  1. debug : 应用程序无法正常启动(0xc000007b)
  2. 是时候该学会 MMDetection 进阶之非典型操作技能(一)
  3. Windows编程-创建窗口
  4. 数据库实验三 嵌套查询和视图操作
  5. Linux kali无线安全之WPA/WPA2握手包捕获与爆破
  6. 美团后台篇中的ReentrantLock
  7. NOIP2017提高组总结
  8. 手动实践3-把握移动端字体设计的七大准则
  9. 读取obj+mtl 文件 (OpenGL C++)
  10. 在 VMware Workstation 16 Pro 中安装 Ubuntu Server 22.04.1 并配置静态 IP 地址