C++ 使用QPaint绘制可缩放的QIcon

C++ 使用QPaint绘制可缩放的QIcon,c++,qt,icons,scalable,C++,Qt,Icons,Scalable,我想设计一个新的QIcon,希望它看起来像一个固定的文本,周围有一个圆角矩形 .-----. | Phy | `-----´ 当在最终应用了比例变换的QPaint上绘制时(例如,当我绘制到QGraphicsView的一部分并在其场景上应用了比例的小部件时),图标应该在没有“像素块”效果的情况下进行缩放 因此,我很难知道我应该如何画我的旗袍。如果我按照下面的方法来做,我将绘制一个QPixmap,它总是有固定数量的像素,因此当比例足够大时不可避免地引入像素块效果 void MyWidget::d

我想设计一个新的QIcon,希望它看起来像一个固定的文本,周围有一个圆角矩形

.-----.
| Phy |
`-----´
当在最终应用了比例变换的QPaint上绘制时(例如,当我绘制到QGraphicsView的一部分并在其场景上应用了比例的小部件时),图标应该在没有“像素块”效果的情况下进行缩放

因此,我很难知道我应该如何画我的旗袍。如果我按照下面的方法来做,我将绘制一个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);
 }
我要寻找的是一种类似QFont与
drawText
的工作方式。无论我的比例有多大,当我绘制字体时,它总是看起来很锐利,我无法检测单个像素

我想象我可以告诉
QPainter
将我的图标绘制成一个给定的像素矩形,然后
QPainter
在让我的
QIconEngine::paint
将项目渲染成一个可能更大的矩形或像素地图之前,对矩形本身进行变换。但我看不出我怎么能做这样的事


我是不是太傻了,没有看到明显的解决方案?

我通过将图标/图像创建为SVG文件,并使用
qsvgrender
将它们绘制到
QPainter
上来实现这一点。所需的类在中。

我确实完全被转储了。我可以使用
QIcon::paint
并将矩形传递给它。它将正确地将请求委托给图标引擎。

要创建可缩放的图形吗?大概是这样,当它“重放”QPainter命令时,不确定它与
QSvg
类相比的效率有多高。我刚刚找到了正确的解决方案:仅使用QIcon的绘画功能就足够了。