QPen 的使用是装饰性的,但宽度不为零
Posted
技术标签:
【中文标题】QPen 的使用是装饰性的,但宽度不为零【英文标题】:Usage of QPen which is cosmetic but not width zero 【发布时间】:2019-04-17 09:32:24 【问题描述】:我最近将一个应用程序从 Qt 4 迁移到 Qt 5。我曾经使用默认的 QPen()
,宽度为零,因此很美观。迁移后,我无法将其保留为默认值(默认笔已更改为宽度 1,因此不是装饰性的)。所以我只是给setCosmetic(True)
添加了一个电话,所以我的笔是化妆品但宽度为1。
但是,这导致了一些(对我而言)意想不到的行为。特别是我有一些QGraphicsEllipseItem
对象给出了不正确的选择行为:具体来说,一个非常小的椭圆,放大到一个大尺寸,将有一个比绘制时大得多的shape()
。它是用化妆笔(1 像素)绘制的,但形状是按照放大 1 号的笔来计算的。
这很容易解决:我只是将 QPen
宽度设置为 0。但它在我的脑海中提出了一个问题。
非零宽度的化妆笔的预期语义是什么? QGraphicsEllipseItem
的这种行为是有意的,并且具有有用的应用程序,还是出乎意料?
【问题讨论】:
【参考方案1】:查看QGraphicsItem::paint()
的文档:
QGraphicsItem 不支持使用宽度非零的化妆笔。
【讨论】:
啊有趣-谢谢。我想知道为什么 QPen 允许它们。以上是关于QPen 的使用是装饰性的,但宽度不为零的主要内容,如果未能解决你的问题,请参考以下文章