gpt4 book ai didi

c++ - Qml:Monospace/Normal 字体的平台独立方式

转载 作者:行者123 更新时间:2023-11-30 05:13:52 25 4
gpt4 key购买 nike

有没有办法以平台无关的方式在 Qml 中的“普通”和“等宽”之间切换 font.family

Label {
font.family: "Monospace"
}

目前我分别为每个平台设置字体。随应用程序一起发送字体也是不可取的,因为文本很可能是系统语言(例如,用户界面是英语,但文本可能是 Parsi)。

问候,

最佳答案

看来 this question 的接受答案有效,因此您可以将该字体作为上下文属性公开给 QML:

ma​​in.cpp:

#include <QApplication>
#include <QFontDatabase>
#include <QQmlApplicationEngine>
#include <QQmlContext>

int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication app(argc, argv);

QQmlApplicationEngine engine;
const QFont fixedFont = QFontDatabase::systemFont(QFontDatabase::FixedFont);
engine.rootContext()->setContextProperty("fixedFont", fixedFont);
engine.load(QUrl(QLatin1String("qrc:/main.qml")));

return app.exec();
}

ma​​in.qml:

import QtQuick 2.0
import QtQuick.Window 2.0
import QtQuick.Controls 2.0

Window {
width: 400
height: 400
visible: true

Switch {
id: monospaceSwitch
}

Text {
text: "Hello World"
font: monospaceSwitch.checked ? fixedFont : Qt.application.font
anchors.centerIn: parent
}
}

这假定系统上存在等宽字体。

关于c++ - Qml:Monospace/Normal 字体的平台独立方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43705454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com