QPainterPath 不规则提示框
currentPosition()是最后一次绘制后的“结束点”(或初始点),使用moveTo()移动currentPosition()而不会添加任何元素。
QPainterPath 合并:
1、方法1:connectPath合并成一个路径,从第一个路径的最后一个点链接一条直线到第二个路径
2、方法2:addPath添加一个新路径作为子闭合路径
测试截图如下:
上代码:
准备工作,设置窗口背景透明、置顶、无边框
setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); setAttribute(Qt::WA_TranslucentBackground);
QPainterPath rectPath;
rectPath.moveTo(50, 50);
rectPath.arcTo(0, 0, 50 * 2, 50 * 2, 180, 270);
绘制四分之三椭圆,arcTo参数含义:前两个参数表示椭圆外接举行左上定点坐标,第三和第四参数表示椭圆的宽和高,四五个参数表示绘制起始角度,参数六表示绘制总角度
QPainterPath rectPath2 = rectPath;
复制一个新的闭合路径,并偏移指定距离
rectPath2.translate(100, 100);
rectPath2.connectPath(rectPath); 连接两个闭合路径
QLinearGradient linear(rect().topLeft(),
rect().bottomRight()); 构造一个刷子,设置刷子起始位置
linear.setColorAt(0,
Qt::red);
linear.setColorAt(0.5,
Qt::green);
linear.setColorAt(1,
Qt::blue); 设置指定位置刷子颜色
painter.setPen(QPen(QColor(255, 255, 255, 0), 0,
Qt::SolidLine, Qt::FlatCap,
Qt::RoundJoin)); 设置画笔类型
painter.setBrush(linear);
painter.fillRect(rect(),
Qt::gray);
填充窗口背景色 方便观察(实际开发中以白色为宜)
painter.drawPath(rectPath);
使用addPath/connectPath方式时
该行代码不需要,因为该路径已经被合并到rectPath2
painter.drawPath(rectPath2);绘制制定闭合路径
不规则提示框如下
不规则提示框
代码如下
QPainter painter(this); QPainterPath rectPath; rectPath.addRoundRect(QRect(rect().width() / , rect().height() / , rect().width() / , rect().height() / ), ); QPainterPath triPath; triPath.moveTo(, ); triPath.lineTo(rect().width() / , rect().height() / ); triPath.lineTo(rect().width() / * , rect().height() / ); triPath.lineTo(, ); rectPath.addPath(triPath); 添加子闭合路径 QLinearGradient linear(rect().topLeft(), rect().bottomRight()); linear.setColorAt(, Qt::red); linear.setColorAt(0.5, Qt::green); linear.setColorAt(, Qt::blue); painter.setPen(QPen(QColor(, , , ), , Qt::SolidLine, Qt::FlatCap, Qt::RoundJoin)); painter.setBrush(linear); painter.fillRect(rect(), Qt::gray); painter.drawPath(rectPath);
最终效果
效果图
ui布局
rectPath.addRoundRect(QRect(rect().width() / 8,
rect().height() / 2
, rect().width() / 8 * 7, rect().height() / 2),
10);
QPainterPath 不规则提示框的更多相关文章
- QPainterPath 不规则提示框(二)
前一篇讲过不规则提示框,但是提示框的方向是固定的,不能达到随意变换方向的效果,本接讲述可以动态变换方向的提示框 先看效果图 图1 图2 图3 图4 如上图1所示,上一篇文章的代码可以达到类似效果 本 ...
- 利用CSS中的:after、: before制作的边三角提示框
小颖昨天分享了一篇参考bootstrap中的popover.js的css画消息弹框今天给大家再分享一篇使用:before和:after伪元素画消息弹框的CSS. 画出来是介个酱紫的: 有没有觉得画的萌 ...
- javascript-模板方法模式-提示框归一化插件
模板方法模式笔记 父类中定义一组算法操作骨架,而将一些实现步骤延迟到子类中,使得子类可以不改变父类的算法结构的同时可重新定义算法中某些实现步骤 实例:弹出框归一化插件 css样式 ;width ...
- 使用纯CSS实现带箭头的提示框
爱编程爱分享,原创文章,转载请注明出处,谢谢!http://www.cnblogs.com/fozero/p/6187323.html 1.全部代码 <!DOCTYPE html> < ...
- 纯css来实现提示框
用js用多了,就疏忽了最基本的css了---用title属性来实现提示框.下面言归正传------如何用css实现提示框: 1.利用title属性来实现鼠标滑过某个元素时,实现提示整段内容的功能(利用 ...
- js弹出框、对话框、提示框、弹窗总结
一.JS的三种最常见的对话框 //====================== JS最常用三种弹出对话框 ======================== //弹出对话框并输出一段提示信息 funct ...
- android标题栏上面弹出提示框(二) PopupWindow实现,带动画效果
需求:上次用TextView写了一个从标题栏下面弹出的提示框.android标题栏下面弹出提示框(一) TextView实现,带动画效果, 总在找事情做的产品经理又提出了奇葩的需求.之前在通知栏显示 ...
- android标题栏下面弹出提示框(一) TextView实现,带动画效果
产品经理用的是ios手机,于是android就走上了模仿的道路.做这个东西也走了一些弯路,写一篇博客放在这里,以后自己也可用参考,也方便别人学习. 弯路: 1.刚开始本来用PopupWindow去实现 ...
- 自定义iOS 中推送消息 提示框
看到标题你可能会觉得奇怪 推送消息提示框不是系统自己弹出来的吗? 为什么还要自己自定义呢? 因为项目需求是这样的:最近需要做 远程推送通知 和一个客服系统 包括店铺客服和官方客服两个模块 如果有新的消 ...
随机推荐
- Java Fork/Join 框架
简介 从JDK1.7开始,Java提供Fork/Join框架用于并行执行任务,它的思想就是讲一个大任务分割成若干小任务,最终汇总每个小任务的结果得到这个大任务的结果. 这种思想和MapReduce很像 ...
- Micropython TPYBoard ADC的使用方法
基本用法 import pybadc = pyb.ADC(Pin('Y11')) # create an analog object from a pinadc = pyb.ADC(pyb.Pin.b ...
- React从入门到放弃之前奏(5):ReactRouter4
概念 安装:npm i -S react-router react-router-dom GitHub:ReactTraining/react-router React Router中有三种类型的组件 ...
- exgcd学习笔记
扩展欧几里得算法是当已知a和b时,求得一组x和y使得 首先,根据数论中的相关定理,解一定存在 //留坑待填 之后我们可以推一推式子 将a替换掉 展开括号 提出b,合并 且 设 现在已经将 ...
- 【STM32H7教程】第6章 STM32H7工程模板建立(IAR8)
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第6章 STM32H7工程模板建立(IAR8) 本章 ...
- SpaceSyntax【空间句法】之DepthMapX学习:第二篇 输出了什么东西 与 核心概念
这节比较枯燥,都是原理,不过也有干货.这篇能不能听懂,就决定是否入门...所以,加油吧 博客园/B站/知乎/CSDN @秋意正寒 转载请在文头注明本文地址 本篇讲空间句法的几个核心概念,有一些也是重 ...
- Java:并发不易,先学会用
我从事Java编程已经11年了,绝对是个老兵:但对于Java并发编程,我只能算是个新兵蛋子.我说这话估计要遭到某些高手的冷嘲热讽,但我并不感到害怕. 因为我知道,每年都会有很多很多的新人要加入Java ...
- asp.net core系列 46 Identity介绍
一. Identity 介绍 ASP.NET Core Identity是一个会员系统,可为ASP.NET Core应用程序添加登录功能.可以使用SQL Server数据库配置身份以存储用户名,密码和 ...
- Spring Boot 2.x整合Redis
最近在学习Spring Boot 2.x整合Redis,在这里和大家分享一下,希望对大家有帮助. Redis是什么 Redis 是开源免费高性能的key-value数据库.有以下的优势(源于Redis ...
- Shell编程(week4_day5)--技术流ken
本节内容 1. 三剑客简介 2. sed命令详解 3. awk命令详解 文本处理三剑客 在 Shell 下使用这些正则表达式处理文本最多的命令有下面几个工具: 命令 描述 ...