首页 > 解决方案 > QML:Qt.labs.platform.MenuItem 的图标

问题描述

有一个插件叫Qt.labs.platform. 除其他外,它还提供带有菜单的托盘图标。该菜单有一个MenuItems 列表。任何菜单项都可能有一个图标,该图标将显示在项目文本的左侧。

有两种设置图标的方法,但都不适合我:

1) 版本 1.0 定义iconSourceiconName属性。

静默不起作用,只是不显示图标。

2) 修订版 1.1(声明为Q_REVISION(1))引入icon.name和“子属性”(不确定它的正确名称是什么?icon.sourceicon.mask

使 QML 引擎失败并显示一条消息:
"MenuItem.icon" is not available in Qt.labs.platform 1.1.

我都试过了import Qt.labs.platform 1.11.0

我是否遗漏了 QML 修订机制中的某些内容,或者这是 Qt 中的错误?

A在qquickplatformmenuitem_p.hMenuItem中声明并在qquickplatformmenuitem.cpp文件中定义。

我正在使用 ArchLinux、KDE/Plasma。其他一些应用程序(如基于电子的)确实在菜单中正确显示了它们的图标。

UPD报告为Qt 错误

标签: qtqmlqtplugin

解决方案


我不知道你究竟在做什么来实现你的目标,因为没有最小的可重复的例子。

但是看看这里

import QtQuick 2.12
import QtQuick.Window 2.12
// import Qt.labs.platform 1.1
import QtQuick.Controls 2.12

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Rectangle {
        width: 200
        height: 200
        anchors.centerIn: parent

        MenuBar {
            id: menuBar

            Menu {
                id: firstMenu

                MenuItem {
                    icon.name: "download"
                    icon.source: "icons/cloud-down-icon.png"
                }

                MenuItem {
                    text: qsTr("Rewrap Paragraph")
                    onTriggered: rewrapParagraph()
                }
            }
        }
    }
}


注意:将您的图标放在icons项目文件夹中的文件夹中。

如果你点击菜单,那么你应该得到一个包含两个项目的下拉菜单,第一个只是一个没有文本的图标(你可以自己包含一些文本),第二个项目只是一个文本。


推荐阅读