QML:更改Checkable MenuItem的文本位置

时间:2018-01-06 19:06:40

标签: qt qml menuitem

目前我正在尝试进入未来软件项目的QML。我运行了一个小应用程序,想要制作一个可检查的MenuItem。我浏览了QtQuick2 Controls Customizing Guide并已经更改了指标。现在我的问题是我希望可检查的MenuItem的Textposition与不可检查的MenuItem相同。

Menu {
id: viewMenu
y: parent.height
    MenuItem {
        text: qsTr("Switch Mode")
    }
    MenuItem {
        id: showSidebar
        checkable: true
        checked: true
        text: qsTr("Show Sidebar")
        leftPadding: 0
        indicator: Rectangle {
            implicitHeight: 26
            implicitWidth: 26
            x: parent.width - 35
            y: parent.height / 2 - height / 2
            radius: 3
            border.color: showSidebar.down ? "#17a81a" : "#a451a4"

            Rectangle {
                x: 6
                y: 6
                width: 14
                height: 14
                radius: 2
                color: showSidebar.down ? "#17a81a" : "#a451a4"
                visible: showSidebar.checked
            }

        }
        contentItem: Text {

            text: showSidebar.text
            font: showSidebar.font
            opacity: enabled ? 1.0 : 0.3
            color: showSidebar.down ? "#17a81a" : "#a451a4"
            horizontalAlignment: Text.AlignHCenter
            verticalAlignment: Text.AlignVCenter
            rightPadding: showSidebar.indicator.width + showSidebar.spacing
        }

    }
}

enter image description here

我尝试更改contentItem中的x位置:文本部分但不起作用。更改填充也不起作用。我使用的是Qt 5.9(无法切换到5.10)。

1 个答案:

答案 0 :(得分:1)

在你的showSidebar leftPadding中注释掉horizontalAlignmentMenuItem行,你应该好好去。

leftPadding将默认为与其他菜单项相同的填充值,而水平对齐将默认为Text.AlignLeft。

MenuItem {
    id: showSidebar
    checkable: true
    checked: true
    text: qsTr("Show Sidebar")
    // leftPadding: 0
    indicator: Rectangle {
        implicitHeight: 26
        implicitWidth: 26
        x: parent.width - 35
        y: parent.height / 2 - height / 2
        radius: 3
        border.color: showSidebar.down ? "#17a81a" : "#a451a4"

        Rectangle {
            x: 6
            y: 6
            width: 14
            height: 14
            radius: 2
            color: showSidebar.down ? "#17a81a" : "#a451a4"
            visible: showSidebar.checked
        }

    }
    contentItem: Text {
        text: showSidebar.text
        font: showSidebar.font
        opacity: enabled ? 1.0 : 0.3
        color: showSidebar.down ? "#17a81a" : "#a451a4"
        // horizontalAlignment: Text.AlignHCenter
        verticalAlignment: Text.AlignVCenter
        rightPadding: showSidebar.indicator.width + showSidebar.spacing
    }
}