gpt4 book ai didi

qt - KDE 任务栏进度

转载 作者:行者123 更新时间:2023-12-02 06:29:22 27 4
gpt4 key购买 nike

我正在尝试使用 KDE 框架在等 ionic 桌面的任务栏中显示进度。简而言之,当它复制文件时,它想做和 dolphin 一样的事情:

enter image description here

我有点卡住了,因为我什至不知道从哪里开始。我发现唯一有用的是KStatusBarJobTracker ,但我不知道如何使用它。我找不到任何教程或示例如何做到这一点。

最佳答案

因此,在四处挖掘之后,在@leinir 的帮助下,我能够找到以下信息:

  • 由于 Plasma 5.6 KDE 支持 Unitiy DBus Launcher-API,例如,可以使用它来显示进度
  • 我在 AskUbuntu 上找到了一个帖子这解释了如何将 API 与 Qt
  • 一起使用

    真正的问题是:这个 仅限 如果您在标准位置之一有有效的桌面文件,则可以使用!您需要将该文件作为 DBus 消息的参数传递以使其工作。

    根据这些信息,我想出了如何使用它并创建了一个 GitHub repository ,支持跨平台任务栏进度,并使用此 API 进行 linux 实现。

    但是,无论如何,这里是如何做到的。它应该适用于 KDE Plasma 和 Unity 桌面,也许更多(还没有尝试过其他):
  • 创建 .desktop文件为您的应用程序。出于测试目的,这可以是一个“虚拟”文件,如下所示:
    [Desktop Entry]
    Type=Application
    Version=1.1
    Name=MyApp
    Exec=<path_to>/MyApp
  • 将该文件复制到 ~/.local/share/applications/ (或任何用户特定的桌面文件进入您的系统)
  • 在您的代码中,您需要做的就是执行以下代码,以更新任务栏状态:
    auto message = QDBusMessage::createSignal(QStringLiteral("/com/example/MyApp"),
    QStringLiteral("com.canonical.Unity.LauncherEntry"),
    QStringLiteral("Update"));

    //you don't always have to specify all parameters, just the ones you want to update
    QVariantMap properties;
    properties.insert(QStringLiteral("progress-visible"), true);// enable the progress
    properties.insert(QStringLiteral("progress"), 0.5);// set the progress value (from 0.0 to 1.0)
    properties.insert(QStringLiteral("count-visible"), true);// display the "counter badge"
    properties.insert(QStringLiteral("count"), 42);// set the counter value

    message << QStringLiteral("application://myapp.desktop") //assuming you named the desktop file "myapp.desktop"
    << properties;
    QDBusConnection::sessionBus().send(message);
  • 编译并运行您的应用程序。您不必通过桌面文件启动它,至少我不需要。如果您想确保您的应用程序已“连接”到该桌面文件,只需为该文件设置一个自定义图标。您的应用程序应在任务栏中显示该图标。

  • 基本上就是这样。 注:系统会在重新启动应用程序时记住最后的状态。因此,您应该在启动应用程序时重置所有这些参数。

    关于qt - KDE 任务栏进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43875343/

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