在 QML 的 MenuBar 中插入文本

Posted

技术标签:

【中文标题】在 QML 的 MenuBar 中插入文本【英文标题】:Inserting text in the MenuBar of QML 【发布时间】:2020-12-24 19:27:16 【问题描述】:

这些菜单默认显示在左侧。我想在菜单开始出现之前在左侧放置一些文本。

如何将菜单向右推以便为菜单栏中的文本创建空间?

我想要以下内容:

“AmplifyRemote”文本在菜单启动之前出现。如何在这里实现?

ApplicationWindow

    id: window; visible: true; width: Screen.width; height: Screen.height; flags: Qt.FramelessWindowHint

    menuBar:
      MenuBar
      
        id: menuBar

        Menu  title: qsTr("File") 
        Menu  title: qsTr("Edit") 
        Menu  title: qsTr("View") 
        Menu  title: qsTr("Help") 

        delegate: MenuBarItem 
            id: menuBarItem

            font
            
                pointSize: decoration.font_size_8
                family: decoration.font_family
            
            contentItem: Text 
                text: menuBarItem.text
                font: menuBarItem.font
                opacity: enabled ? 1.0 : 0.3
                color: menuBarItem.highlighted ? "white":"#3F3F3F"
                horizontalAlignment: Text.AlignLeft
                verticalAlignment: Text.AlignVCenter
                elide: Text.ElideRight
            

            background: Rectangle 
                implicitWidth: 40
                implicitHeight: 40
                opacity: enabled ? 1 : 0.3
                color: menuBarItem.highlighted ? "#292a38" : "transparent"
            
        

        background: Rectangle 
            implicitWidth: 40
            implicitHeight: 11
            color: "#d2d2d2"

            // This is the text I want before menus start
            Text text:"jjjjjjjjj"; anchors.left: parent.left    

            Rectangle 
                color: "#21be2b"
                width: parent.width
                height: 1
                anchors.bottom: parent.bottom
            
        
    

【问题讨论】:

除了将您的特殊文本添加为​​背景的一部分,您可以将其添加为另一个禁用的菜单项,因此无法选择它吗? 请说明如何做到这一点。 @jarman 【参考方案1】:

可能有更漂亮的解决方案,但它可以通过在列表的前面添加一个特殊的菜单项来工作。

MenuBar 
    id: menuBar

    Menu  title: "jjjjjjjj" 
    Menu  title: qsTr("File") 
    Menu  title: qsTr("Edit") 
    Menu  title: qsTr("View") 
    Menu  title: qsTr("Help") 

    delegate: MenuBarItem 
        id: menuBarItem

        enabled: text !== "jjjjjjjj"
    

【讨论】:

以上是关于在 QML 的 MenuBar 中插入文本的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Qt QML 中处理 mac 集成 About MenuBar 项?

如何在 QWidget 中插入 QML 视图

QML TextField输入的文本传输到C++

将我自己的 QML 按钮插入 GridLayout

qml Textfield中的换行符,文本属性不起作用

尝试通过插入子样式项来设置 Qt QML 项的样式