我想设计一个新的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)给图标引擎。