QtQuick 2.0获取字体的大写高度



在QML (QtQuick 2.0)中,FontMetrics提供了关于字体大小的所有信息,除了它的帽高。我真的需要找出一个程序的字体的上限高度(它甚至提供了xHeight,但没有上限高度!!)。x高度和帽高之间有数学关系吗?如果没有,还有其他方法可以找到字体的上限高度吗?请帮助!实际上,我试着搜索了所有可能的解决方案,但什么也没找到!

QFontMetricsFcapHeight方法

https://doc.qt.io/qt-5/qfontmetricsf.html capHeight

可以像下面说的那样从c++中暴露出来。如果这工作,QFontMetricsF有更好的接口,你可以使用。

下面的代码是手写的(会有语法或编译错误)。但是给了你一个想法。

//EXPOSE THE INFORMATION FROM C++
class fontDetails : public QObject
{
Q_OBJECT
Q_PROPERTY(qreal capHeight READ GetCapHeight CONSTANT)
public:

qreal GetCapHeight() const {
return QFontMetricsF(<<YOUR FONT>>).capHeight();
}
};

//SET THE CONTEXT
int main(int argc, char *argv[]) {
QGuiApplication app(argc, argv);
QQuickView view;
fontDetails fontdetails;
view.engine()->rootContext()->setContextProperty("fontdetails", &fontdetails);
view.setSource(QUrl::fromLocalFile("<<YOUR QML>>.qml"));
view.show();
return app.exec();
}

然后在QML

中消费
Label {
text: fontdetails.GetCapHeight()
}

相关内容

最新更新