当前位置: 首页 > news >正文

成都网站设计建设推荐北太平桥网站建设

成都网站设计建设推荐,北太平桥网站建设,做平面设计的网站有哪些,网站开发使用的语言有哪些QWidget窗口抗锯齿圆角的一个实现方案(支持子控件)2 本方案使用了QGraphicsEffect,由于QGraphicsEffect对一些控件会有渲染问题,比如列表、表格等,所以暂时仅作为研究,优先其他方案 在之前的文章中&#…

QWidget窗口抗锯齿圆角的一个实现方案(支持子控件)2

本方案使用了QGraphicsEffect,由于QGraphicsEffect对一些控件会有渲染问题,比如列表、表格等,所以暂时仅作为研究,优先其他方案

在之前的文章中(支持子控件的抗锯齿圆角方案),对于独立弹窗的抗锯齿圆角,使用一层遮罩来实现对窗口内容的裁切。

在很早之前还考虑过另外一种方案,既然QGraphicsEffect能够对控件进行一些特效处理,那自定义QGraphicsEffect也应该可以做到对内容裁剪。但当时仅在QComboBox下拉列表上进行了测试,没有达到预期(实际可能是Qt内部的bug),甚至导致了我对QGraphicsEffect原理的误解。

直接说方案。

方案
  1. 重写一个QGraphicsEffect,照着其他Qt提供的类,重写QGraphicsEffect::draw接口。
    简单来说就是通过混合模式对sourcePixmap进行圆角位置的像素清除,支持抗锯齿
void draw(QPainter *painter)
{// 一些Qt的逻辑QPoint offset;Qt::CoordinateSystem system = sourceIsPixmap() ? Qt::LogicalCoordinates : Qt::DeviceCoordinates;QPixmap pixmap = sourcePixmap(system, &offset, QGraphicsEffect::NoPad);if (pixmap.isNull())return;painter->save();QPainter pixmapPainter(&pixmap);pixmapPainter.setRenderHints(QPainter::Antialiasing); // 打开抗锯齿pixmapPainter.setPen(Qt::NoPen);pixmapPainter.setBrush(Qt::red); //颜色不重要,非透明即可pixmapPainter.setCompositionMode(QPainter::CompositionMode_DestinationOut); // 混合模式,达到清楚圆角部分像素目的QPainterPath path;// _target是目标QWidget,可以通过构造函数自己保存// 区域增大一点,避免边界有残留path.addRect(QRect(QPoint(0, 0), _target->size()).adjusted(-1, -1, 1, 1));path.addRoundedRect(QRect(QPoint(0, 0), _target->size()), 20, 20);// 一些Qt的绘制逻辑if (system == Qt::DeviceCoordinates) {QTransform worldTransform = painter->worldTransform();worldTransform *= QTransform::fromTranslate(-offset.x(), -offset.y());pixmapPainter.setWorldTransform(worldTransform);} else {pixmapPainter.translate(-offset);}pixmapPainter.drawPath(path);pixmapPainter.end();painter->setWorldTransform(QTransform());painter->drawPixmap(offset, pixmap);painter->restore();
};

上述代码里包含Qt的一些代码逻辑,没有具体研究过差异。

  1. 设置给目标控件即可
    下拉框动画过程中会存在一些黑色像素,可以关闭动画。主要还是建议在相对静态的控件中使用。
    在这里插入图片描述
结论

个人理解Qt的QGraphicsEffect里有相当多的问题,较早的版本可能对窗口的子控件无效,后期增加了对子控件的统一渲染支持,直到Qt6.4(应该是这个版本)解决了大部分问题,但对于像列表、表格等存在脏区域优化的控件,仍然存在渲染问题。

http://www.yayakq.cn/news/746324/

相关文章:

  • apache 静态网站手机网站预约表单
  • 仿古建筑公司网站wordpress开发api接口
  • 软件工程师月薪网站做优化效果怎么样
  • 精美个人网站正规的网站建设
  • 中国工程信息网站个性化定制平台
  • 网站建设会议讲话泰州建站程序
  • 如何推广自己网站链接如何让企业网站
  • 网站开发学习方法海南百度网站建设
  • 建设部证书公布网站学习制作网页的网站
  • 投资理财网站开发制作wordpress云建站教程
  • 制作企业网站的一般流程做网站的费用会计分录
  • 网站营销平台代理商小吃网站建设规划书
  • 阿里巴巴做网站需要多少钱wordpress怎么买模板
  • 南京马鞍山网站建设企业办公系统oa哪个好
  • 全国网站开发公司广州营销推广
  • 做头像的网站有哪些wordpress菜单下拉菜单
  • 企业建设网站有什么作用为企业建网站过时了
  • wordpress 阅读器seo关键词快速获得排名
  • 做网站推广有哪些公司中国优秀网页设计案例
  • 江苏省建设安全协会网站wordpress定时器插件
  • 典型的网站开发人员做网站较好的框架
  • 中小企业网站建设价位重庆制作网站模板建站公司
  • 中国网页设计师网站心理网站开发背景
  • 建设品牌公司网站软件开发成本估算
  • 网页设计作品欣赏网站深圳英文网站建设去哪家
  • 潮州专业网站建设制作建设项目环境影响评价登记表网站
  • 网站入口你会回来感谢我的关键词站长工具
  • 网站开发 案例详解推销什么企业做网站和app
  • 山西教育学会网站建设多语言商城系统
  • 写作网站官方no.7极简wordpress博客主题