有没有办法在 Qt 5 中绘制小数点大小的文本。我正在尝试使用QFont::setPointSizeF()
,但它似乎不适用于我尝试过的任何平台(mac/linux/windows),并且点大小总是四舍五入。
QFontDatabase::isScalable
并在所有情况下QFontDatabase::isSmoothlyScalable
返回true
字体。
我尝试设置各种QFont::fontHintingPreference
和QPainter::RenderHint
.
我也许可以使用QFont::setPixelSize
and来解决这个问题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();
}