Qt 5 で分数のポイント サイズでテキストを描画する方法はありますQFont::setPointSizeF()
か?
QFontDatabase::isScalable
すべての場合にフォントをQFontDatabase::isSmoothlyScalable
返します。true
色々QFont::fontHintingPreference
と設定してみQPainter::RenderHint
ました。
QFont::setPixelSize
と を使用してこれを回避できるかもしれませんが、壊れているのはQPainter::scale
奇妙に思えますか?!QFont::setPointSizeF
私は何かを見逃していますか、何か間違っていますか?
問題を示す簡単なプログラム:
#include <QtWidgets>
class MyWidget : public QWidget
{
public:
MyWidget() : QWidget(0)
{
}
protected:
void paintEvent(QPaintEvent */*e*/)
{
QPainter p(this);
int y=10;
for (qreal i = 10; i < 20; i += 0.2) {
QFont font("Times"); // or any font font in the system
font.setPointSizeF(i);
p.setFont(font);
p.drawText(1, y, QString("This should be point size %1 but is %2!").arg(font.pointSizeF()).arg(QFontInfo(font).pointSizeF()));
y += i;
}
}
};
int main(int argc, char **argv)
{
QApplication app(argc, argv);
MyWidget widget;
widget.resize(400, 740);
widget.show();
return app.exec();
}