【发布时间】:2013-10-02 21:10:48
【问题描述】:
有没有办法在 Qt 5 中绘制小数点大小的文本。
我正在尝试使用QFont::setPointSizeF(),但它似乎不适用于我尝试过的任何平台(mac/linux/windows),并且点大小总是四舍五入。
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();
}
【问题讨论】:
-
qt4 有同样的问题吗?你在尝试 5.1.1 吗?
-
在 Mac 上短暂试用过 Qt 4.8,在 mac、linux 和 windows 上试用过 Qt 5.1.1 中的更多内容(对于 windows 尝试过 dl 版本,甚至是支持直接写入的编译版本)
-
开始使用 scale 和 setPixelSize 是否会变得更好?