Android qmlui中的字体更改

Android qmlui中的字体更改,android,qt,qml,settings,Android,Qt,Qml,Settings,我已经用Qt/QML开发了一个android应用程序,它运行良好。 但是,当我改变我的Android手机设置时,比如显示字体->小到中或中到大。 它不适用于我的申请-申请中没有更改。 如何在我的应用程序中实现此更改。 提前谢谢 例如:- 如果我更改android手机显示设置的字体大小,那么它会自动更改每个应用程序eq.whatsapp、facebook等的字体大小。 但在我的例子中,我已经在Qt/QML中开发了一个android应用程序,它不会随着显示字体大小而改变 < P>手动完成此操作,使用

我已经用Qt/QML开发了一个android应用程序,它运行良好。 但是,当我改变我的Android手机设置时,比如显示字体->小到中或中到大。 它不适用于我的申请-申请中没有更改。 如何在我的应用程序中实现此更改。 提前谢谢

例如:- 如果我更改android手机显示设置的字体大小,那么它会自动更改每个应用程序eq.whatsapp、facebook等的字体大小。
但在我的例子中,我已经在Qt/QML中开发了一个android应用程序,它不会随着显示字体大小而改变

< P>手动完成此操作,使用C++和JNI。p> 包括

然后获取JavaQTActivity类

QAndroidJniObject qtActivity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;");
获取资源:

QAndroidJniObject resources = qtActivity.callObjectMethod("getResources","()Landroid/content/res/Resources;");
获取配置对象并读取字体比例

QAndroidJniObject configuration = resources.callObjectMethod("getConfiguration","()Landroid/content/res/Configuration;");
float scale = configuration.getField<float>("fontScale");

@Hubi嗨,我在我的qt/qml应用程序中尝试了这段代码。 当我使用这个解决方案时,它工作得很好,但问题是,当我默认启动应用程序时,它会获取resource fontsize并将该值设置到我的UI中 下面提到了我尝试过的代码

#include "addnewguestclass.h"

AddNewGuestClass::AddNewGuestClass()
{

    QQmlApplicationEngine *m_View;
    m_View = new QQmlApplicationEngine();
    m_View->load(QUrl(QStringLiteral("qrc:test.qml")));
    //m_View->rootContext()->setContextProperty("AddNewGuest",this);
    //QObject *root = m_View->rootObjects().value(0);

    QAndroidJniObject qtActivity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;");

    QAndroidJniObject resources = qtActivity.callObjectMethod("getResources","()Landroid/content/res/Resources;");

    QAndroidJniObject configuration = resources.callObjectMethod("getConfiguration","()Landroid/content/res/Configuration;");
    float scale = configuration.getField<float>("fontScale");
    qDebug()<<"Scale: "<< scale;

    m_View->rootContext()->setContextProperty("fontScale", scale);
}

请添加更多内容,例如显示一段代码,其中您正在使用字体和设置大小,这样您的问题可能会被否决/removed@Amfasis我已经更新了我的问题,对于这段代码,整个应用程序都无法上传,这意味着应用程序的每个UI都应该根据itdisplay设置进行更改。请尝试使用此解决方案。我猜唯一的方法是使用Android API,然后使用Jni调用C++/QML。阅读如何阅读。在您的情况下,您必须关注fontScale。也要检查一下。查看文章中的代码示例。@RamkumarR,我已经完成了线程,没有找到任何解决方法。谢谢你的建议。谢谢你,我会像这样使用。请更新您的初始帖子!不要回复自己的帖子。备注:标签中的font.pixelSize应为fontScale。=>font.pixelSize:fontScaleOk Hubi..,我已经应用了这个,但没有任何更改。
#include "addnewguestclass.h"

AddNewGuestClass::AddNewGuestClass()
{

    QQmlApplicationEngine *m_View;
    m_View = new QQmlApplicationEngine();
    m_View->load(QUrl(QStringLiteral("qrc:test.qml")));
    //m_View->rootContext()->setContextProperty("AddNewGuest",this);
    //QObject *root = m_View->rootObjects().value(0);

    QAndroidJniObject qtActivity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;");

    QAndroidJniObject resources = qtActivity.callObjectMethod("getResources","()Landroid/content/res/Resources;");

    QAndroidJniObject configuration = resources.callObjectMethod("getConfiguration","()Landroid/content/res/Configuration;");
    float scale = configuration.getField<float>("fontScale");
    qDebug()<<"Scale: "<< scale;

    m_View->rootContext()->setContextProperty("fontScale", scale);
}
property real dp: screen.pixelDensity * 10 * 2.54 / 160
       Item {
           width: 50*dp
           height: 50*dp
           anchors.centerIn: parent

           Label {
               text: qsTr("Hi, I am Hemant")
               //font.pixelSize: 16*dp
               font.pixelSize: Qt.application.font.pixelSize

           }
       }