qml menuBar详解

1、概述

QML 中的 MenuBar 是一个用于创建菜单栏的控件,通常由下拉菜单组成,位于窗口的顶部边缘。MenuBar 继承自 Container,允许开发人员在其上添加多个菜单(Menu),每个菜单中可以包含多个动作(Action)或子菜单。

2、重要属性
  • menus:列表类型,保存菜单列表。这个列表包含了在 QML 中声明为 MenuBar 子元素的所有菜单,以及通过 addMenu() 和 insertMenu() 方法动态添加或插入的菜单。
  • contentHeight:实际内容高度,用于计算 MenuBar 的总隐式高度。
  • contentWidth:实际内容宽度,用于计算 MenuBar 的总隐式宽度。
  • delegate:组件类型,此属性保存用于创建菜单栏项目以在菜单栏中呈现菜单的组件。
3、重要方法
  • void addMenu(Menu menu):将菜单添加到菜单列表的末尾。
  • void insertMenu(int index, Menu menu):在索引处插入菜单。返回索引处的菜单,如果不存在则返回 null。
  • Menu menuAt(int index):返回索引处的菜单。
  • void removeMenu(Menu menu):删除并销毁指定的菜单。
  • Menu takeMenu(int index):移除并返回索引处的菜单,项目的所有权转移给调用者。
ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: "Action 示例"

    menuBar: MenuBar {
        Menu {
            title: qsTr("&File")
            MenuItem {
                text: qsTr("&New...")
                // 可以连接信号到槽函数,例如:onTriggered: someFunction()
            }
            MenuItem {
                text: qsTr("&Open...")
                onTriggered: {
                    // 打开文件对话框的代码
                }
            }
            MenuItem {
                text: qsTr("&Save")
            }
            MenuItem {
                text: qsTr("Save &As...")
            }
            MenuSeparator {}
            MenuItem {
                text: qsTr("&Quit")
                onTriggered: Qt.quit()
            }
        }
        Menu {
            title: qsTr("&Edit")
            MenuItem {
                text: qsTr("Cu&t")
            }
            MenuItem {
                text: qsTr("&Copy")
            }
            MenuItem {
                text: qsTr("&Paste")
            }
        }
        Menu {
            title: qsTr("&Help")
            MenuItem {
                text: qsTr("&About")
                onTriggered: {
                    // 打开关于对话框的代码
                }
            }
        }
    }
}

觉得有帮助的话,打赏一下呗。。

           

需要商务合作(定制程序)的欢迎私信!! 

### QML Repeater 元素详解 #### 创建多个相似项 在QML中,`Repeater`元素用于创建多个相同或相似的项[^1]。此功能使得开发者能够轻松地生成一系列具有共同特性的UI组件。 #### 关键属性说明 - **model**: 定义了要重复的数据源。这可以是一个简单的整数表示次数,也可以是更复杂的数据结构如列表或JSON对象。 - **delegate**: 描述每一个实例的具体外观和行为。对于每次迭代,都会基于该模板创建一个新的实例[^2]。 #### 布局管理 为了更好地管理和排列由`Repeater`产生的项目,通常会将其嵌入到某种类型的容器内,比如`Row`, `Column`等定位器类型中,从而实现更加直观的位置安排[^3]。 #### 数据绑定特性 值得注意的是,在使用`Repeater`时遵循了QML的设计理念——即保持数据与界面逻辑分离的原则。这意味着可以通过改变底层的数据模型来动态更新界面上显示的内容,而不需要修改具体的视图定义[^4]。 ```qml import QtQuick 2.0 // 示例展示了如何利用Repeater在一个水平行里放置三个黄色矩形框 Row { spacing: 5 // 设置间距 Repeater { model: 3 delegate: Rectangle { width: 100; height: 40; border.width: 1; color: "yellow" Text { text: index.toString(); anchors.centerIn: parent } } } } ``` 这段代码片段不仅实现了基本的功能展示,还加入了内部文本标签以区分各个实例,并通过调整`spacing`参数改善视觉效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值