7

新しい 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);
 }

私が探しているのは、QFont withdrawTextの動作に似た方法です。スケールの大きさに関係なく、フォントを描画すると常にシャープに見え、個々のピクセルを検出できません。

QPainterアイコンを特定のピクセル四角形に描画し、アイテムをより大きな四角形またはピックスマップにレンダリングする前に四角形自体QPainterを変換するように指示できると思います。しかし、どうすればこのようなことができるのかわかりません。QIconEngine::paint

私は愚かで、明らかな解決策が見えていませんか?

4

2 に答える 2

7

私は確かに完全に捨てられました。QIcon::paint長方形を使用して渡すことができます。リクエストをアイコンエンジンに正しく委任します。

于 2012-09-17T16:08:11.267 に答える
1

これを行うには、アイコン/画像をSVGファイルとして作成し、を使用QSvgRendererしてそれらをにペイントしますQPainter。必要なクラスはSVGモジュールにあります。

于 2012-09-17T14:50:10.543 に答える