Roson的Qt之旅 #115 QML Menu用法

发布于:2022-12-17 ⋅ 阅读:(514) ⋅ 点赞:(0)

 1.概述

菜单有两个主要用例:

  • 上下文菜单。例如,右键单击后显示的菜单
  • 弹出菜单。例如,单击按钮后显示的菜单
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.2

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

    Button {
        id: fileButton
        text: "File"
        onClicked: menu.open()

        Menu {
            id: menu
            y: fileButton.height

            MenuItem {
                text: "New..."
            }
            MenuItem {
                text: "Open..."
            }
            MenuItem {
                text: "Save"
            }
        }
    }
}

通常情况下,菜单项被静态地声明为菜单的子项,但Menu也提供API来动态地添加、插入、移动和删除项目。菜单中的项目可以使用 itemAt() 或 contentChildren 来访问。

尽管MenuItems最常与Menu一起使用,但它可以包含任何类型的项目。

参见自定义菜单、菜单控件和弹出式控件。

2.属性说明

[default] contentData : list<Object>

这个属性持有内容数据的列表。

这个列表包含了所有在QML中被声明为菜单子项的对象,以及分别使用addItem()和insertItem()方法动态添加或插入的项目。

注意:与contentChildren不同,contentData确实包括非可视的QML对象。当项目被插入或移动时,它不会被重新排序。

另见Item::data和contentChildren。

[read-only] contentModel : model

此属性持有用于显示菜单项的模型。
内容模型是为可视化目的提供的。它可以作为模型分配给展示菜单内容的内容项。

  Menu {
      id: menu
      contentItem: ListView {
          model: menu.contentModel
      }
  }

该模型允许菜单项被静态地声明为菜单的子项。

title : string

此属性持有菜单的标题。

当菜单是一个子菜单时,菜单的标题通常显示在菜单项的文本中,而当它在菜单栏中时,则显示在工具按钮的文本中。


3.函数说明

void addItem(Item item)

将项目添加到项目列表的末尾。

void insertItem(int index, Item item)

在索引中插入项目。

Item itemAt(int index)

返回索引处的项目,如果不存在则为空。

void moveItem(int from, int to)

将一个项目从一个索引移到另一个索引。

void removeItem(int index)

移除索引处的项目。
注意:物品的所有权转移给呼叫者。

本文含有隐藏内容,请 开通VIP 后查看