首页 > 其他分享 >Qt CustomDashLine会对范围外Path自动裁剪问题

Qt CustomDashLine会对范围外Path自动裁剪问题

时间:2023-10-24 18:56:09浏览次数:44  
标签:20.0 Qt stroke pen 虚线 CustomDashLine Path

  在使用QPainter进行绘制时发现问题。当直接使用QPen进行绘制自定义虚线时会出现一个问题:

    当绘制的Path遇到界面进行裁剪时,此时虚线线型将会省略裁剪的那一部分,导致自定义虚线在移动以及放大时会自动修改位置。

  解决办法:直接使用QPainterPathSkroke。

  问题描述如下:

    自定义虚线如下。

  

      移动位置后虚线的位置自动变化:

 

上述错误代码如下:

    QPen pen;
    pen.setStyle(Qt::CustomDashLine);
    pen.setJoinStyle(Qt::RoundJoin);
    pen.setCapStyle(Qt::SqareCap);
    QVector<qreal> dashlines{30.0,20.0,10.0,20.0};
    pen.setDashPattern(dashlines);
    painter->setPen(pen);
    painter->drawPath(path);

解决方法如下: 

    QPainterPathStroker stroke;
    stroke.setStyle(Qt::CustomDashLine);
    stroke.setJoinStyle(Qt::RoundJoin);
    stroke.setCapStyle(Qt::SqareCap);
    QPainterPath strokePath = stroker.createStroke(path);
    QVector<qreal> dashlines{30.0,20.0,10.0,20.0};
    strokePath.setDashPattern(dashlines);
    painter->setPen(pen);
    painter->drawPath(strokePath);

解决后效果如下:
  

 

 

    

标签:20.0,Qt,stroke,pen,虚线,CustomDashLine,Path
From: https://www.cnblogs.com/learning77/p/17785517.html

相关文章

  • Qt - QDateTime类的使用
    介绍QDateTime类是Qt框架中用于处理日期和时间的类,在Qt中拥有广泛的应用。它能够精确地表示某个事件或时间点,并且支持对日期和时间进行各种操作和转换,比如计算两个时间之间的差值、设置时区、格式化输出等。使用QDateTime类,我们能够轻松地完成各种日期和时间的转换和处理,从而方......
  • 算法笔记(2)FHQtreap
    原发布于我的个人博客前言FHQtreap绝对是平衡树里最好写,最实用的,他几乎能做所有splay或其它平衡树能做的事,还能可持久化!这篇文章将会介绍FHQtreap的基本操作和维护区间的操作,并附上例题。基本操作FHQtreap的基本操作只有两个,分裂和合并。有些读者可能会问,分裂和合并和平衡树......
  • Qt - Label标签显示特殊字符
    1.创建一个带Ui界面的测试工程,把特殊字符拷贝到label标签里,点击保存。 2.打开qt安装目录,找到designer.exe文件双击打开 3.把刚刚创建的ui界面拖进来 4.点击窗口-》ViewC++Code...5.会弹出一个窗口里面有ui文件的源码,还有一串特殊数字,这串特殊数字就是那个特......
  • xpath的contains用法
    xpath('//div[contains(@class,"a")andcontains(@class,"b")]')#它会取class含有有a和b的元素xpath('//div[contains(@class,"a")orcontains(@class,"b")]')#它会取class含有a或者b满足时,或者同时满足时的元素starts-with顾名思义,匹......
  • 笔记:Qt开发之多线程同步互斥机制
    目标:了解Qt多线程开发中常用的同步互斥类,使用场景和特点 实现线程互斥和同步常用的类互斥锁:QMute、QMutexLocker条件变量:QWaitCondition信号量:QSemaphore读写锁:QReadLocker、QWriteLocker、QReadWriteLock 1,QMutex特点:QMutex是Qt框架提供的互斥锁类,用于保护共享资......
  • 使用 MQTTnet 实现 MQTT 通信示例
    转自:https://cloud.tencent.com/developer/article/2103199一、什么是MQTT?MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。MQTT是基于二进制消息的发布/订阅编程模式的消息协议,如今已经成为OASIS......
  • 微信小程序 mqtt 连接中断原因
    上周开发微信小程序时新加了一个页面,复用了以前页面的逻辑,但是今天发现新加的页面出现了很奇怪的问题:进入新页面后,点一下查询再退出页面,mqtt连接正常;进入新页面后,直接返回退出页面,mqtt连接中断。WebSocketconnectionto"wss://www.xxxx.com/mqtt"failed:Closereceiveda......
  • 《安富莱嵌入式周报》第325期:开源可编程精密电阻仪,开源入耳式无线耳机,蓝牙Mesh固件更
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 更新一期视频,趁热打铁,下期CANopen专题视频将在下周发布BSP视频教程第27期:CANopen协议栈专题,实战方式系统了解NMT,PDO,SDO,时间戳,同步报文,紧急报文等(2023-10-17)https://www.armbb......
  • qt软件崩溃的分析方法-定位源文件和行号
    软件(debug版exe或者release版exe)在正常运行状态下(不是gdb调试运行),如果软件崩掉,那么会直接闪退,软件什么也做不了,此时无法保存软件中的状态信息,此外,也无法提供任何软件崩溃原因的信息。因此,软件崩掉,我们需要能给出信息才行,指导我们修改源码。解决方法如下(针对Windows):注:如果用vs开发qt......
  • OSPF(Open Shortest Path First)vlink-peer
    配置流程1)系统视图下启用ipv6ipv62)创建ospfv3进程ospfv3100//进程为100router-id1.1.1.1//唯一标识为1.1.1.13)配置端口#interfaceGigabitEthernet0/0/1ipv6enable ipv6address2023:23::2/64 ipv6addressautolink-localospfv3100area0.0.0.1//将接口划分......