我想设计一个新的QIcon,并使其看起来像固定文本,并带有一个圆角矩形

.-----.
| Phy |
`-----´

当在最终应用了比例转换的QPainter上绘画时,图标应该按比例缩放而没有“像素块”效果(例如,当我绘制到QGraphicsView的一部分且在其场景中应用了比例的小部件时)。

因此,我很难知道如何绘画我的QIcon。如果按以下方式进行操作,则将绘制始终具有固定像素数量的QPixmap,从而在比例尺足够大时不可避免地引入像素块效果
 void MyWidget::drawIcon(QPainter *painter, QPoint pos) {
     QPixmap pixmap = icon.pixmap(QSize(22, 22),
                                    isEnabled() ? QIcon::Normal
                                                : QIcon::Disabled,
                                    isChecked() ? QIcon::On
                                                : QIcon::Off);
     painter->drawPixmap(pos, pixmap);
 }

我正在寻找的方法类似于带有drawText的QFont的工作方式。无论我的缩放比例有多大,绘制字体时总是看起来很锐利,无法检测到单个像素。

我想我可以告诉QPainter将我的图标绘制到给定的像素矩形中,并且QPainter在允许QIconEngine::paint将项目渲染成可能更大的矩形或像素图之前,先将矩形本身转换。但是我看不到我该怎么做。

我只是愚蠢而没有看到明显的解决方案吗?

最佳答案

我确实确实被彻底抛弃了。我可以只使用QIcon::paint并将其传递给矩形。它将正确地将请求委托(delegate)给图标引擎。

10-08 19:23