如何使用“QAndroidApplication::runOnAndroidMainThread”更改状态栏和导航栏的颜色?

问题描述 投票:0回答:1

我对 Qt 和 qml 还很陌生,并且很难使用 qtquick 在已部署的 andriod 应用程序上更改状态栏和导航栏的颜色。

我发现可以通过 QtAndroid::runOnAndroidThread 更改状态栏的颜色,但这似乎不适用于更新的 Qt 版本。

我发现这段代码可能就是现在使用的代码(https://doc-snapshots.qt.io/qt6-dev/qnativeinterface-qandroidapplication.html#runOnAndroidMainThread):

QAndroidApplication::runOnAndroidMainThread(const std::function<QVariant ()> &runnable, const QDeadlineTimer timeout = QDeadlineTimer::Forever)

与#include .

但不幸的是,我在互联网上找不到任何示例来说明如何以及在代码中使用此函数的位置。更具体地说,我将如何使用此代码来更改状态栏和导航栏的颜色?

我非常感谢这里的帮助。

android qt qml android-statusbar android-navigation-bar
1个回答
0
投票

示例:显示 toast 消息(不在 UI 线程中运行此消息将导致异常)

QString message = "Hello from Toast!";
const int duration = 1; // 0 - short, 1 - long
auto interface = qApp->nativeInterface<QNativeInterface::QAndroidApplication>();
interface->runOnAndroidMainThread([message, duration, interface] {
    auto javaMessage = QJniObject::fromString(message);
    auto toast = QJniObject::callStaticObjectMethod(
        "android/widget/Toast",
        "makeText",
        "(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;",
        interface->context(),
        javaString.object(),
        jint(duration)
    );
    toast.callMethod<void>("show");
});
© www.soinside.com 2019 - 2024. All rights reserved.