qt - 如何在 QML 中隐藏菜单项

标签 qt qml qtquick2 qtquickcontrols2

我正在使用 Qt Quick Controls 2 并为上下文菜单编写以下代码:

Menu{
    id: contextmenu
    x: ( parent.width - contextmenu.width ) / 2
    y: ( parent.height - contextmenu.height ) / 2
    modal: true

    property int selid

    MenuItem {
        text: "Compare"
        visible: isexp
    }
    Divider{ visible: isexp }
    MenuItem {
        text: "Send..."
        visible: isexp
    }
    Divider{ visible: isexp }
    MenuItem {
        text: "Edit..."
    }
    Divider{}
    MenuItem {
        text: "Delete"
    }
}

分隔符 - 这是我的组件。 isexp 是对象的属性。当 isexp false 菜单显示错误。看截图: https://s31.postimg.org/c608kdtbv/qqq.png

如何更改菜单项的可见性并正确显示菜单。感谢您的建议。

最佳答案

除了隐藏项目之外,还将高度设置为0:

import QtQuick 2.6
import QtQuick.Controls 2.0

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

    property bool itemsVisible: true

    Menu {
        id: contextmenu
        x: (parent.width - contextmenu.width) / 2
        y: (parent.height - contextmenu.height) / 2
        modal: true

        MenuItem {
            text: "Compare"
            visible: itemsVisible
            height: visible ? implicitHeight : 0
        }
        MenuItem {
            text: "Send..."
            visible: itemsVisible
            height: visible ? implicitHeight : 0
        }
        MenuItem {
            text: "Edit..."
        }
        MenuItem {
            text: "Delete"
        }
    }

    Button {
        text: "Open"
        onClicked: {
            itemsVisible = !itemsVisible
            contextmenu.open()
        }
    }
}

这是因为菜单的高度基于内部 ListViewcontentHeight

关于qt - 如何在 QML 中隐藏菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38584065/

相关文章:

qt - 使用 FileDialog 在 QtQuick 中浏览文件夹

c++ - 枚举QQmlEngine中的所有对象

c++ - 在我的 Qt 应用程序中打开 Excel 并与之通信

c++ - Windows/opengl glext.h 构建问题

c++ - 单击时 QML 更改 View

qt - QML 布局 : How to give weights to items in a row or column layout?

c++ - 从 qml 上下文访问类的实例

c++ - QT中QByteArray和QByte Stream如何释放内存

c++ - 需要将char*(指针)转换为wchar_t*(指针)

c++ - 外部日志文件为 UTF8 并带有\r\n