QML:更改可检查菜单项的文本位置

QML: Change Text position of Checkable 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
        }

    }
}

我尝试更改 contentItem: Text 部分中的 x 位置但没有成功。更改填充也不起作用。我正在使用 Qt 5.9(无法切换到 5.10)。

注释掉 showSidebar MenuItem 中的 leftPaddinghorizontalAlignment 行,您应该可以开始了。

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
    }
}