QML之Menu菜单

QML学习记录:菜单栏的实现 首先,你需要创建一个MenuBar元素作为菜单栏的容器。然后,在MenuBar中添加多个Menu元素来表示不同的菜单项。每个Menu都可以包含一个MenuItem元素,用于显示下拉菜单。可以根据需要嵌套Menu元素来创建多级子菜单。在QML中,可以使用MenuBar,Menu,和MenuItem元素来实现菜单栏。 阅读详情

QML菜单,我使用了两种方式实现,一种是直接使用QML中的menu实现,另一种是使用的ListView实现。

1.QML有Menu属性是做菜单的。效果如下:


使用起来也方便,你需要import QtQuick.Controls 我的QT版本是5.2的,于是import QtQuick.Controls 1.1,不同版本,请参照帮助文档。

MenuBar {
    Menu {
        title: "File"
        MenuItem { text: "Open..." }
        MenuItem { text: "Close" }
    }


    Menu {
        title: "Edit"
        MenuItem { text: "Cut" }
        MenuItem { text: "Copy" }
        MenuItem { text: "Paste" }
    }
}

现在你的菜单栏就有了,下面是我自己的一个demo



menuBar: MenuBar {
        Menu {
            title: "&File"
            MenuItem { 	    	
		text: "Open"
                shortcut: StandardKey.Quit
                onTriggered:FILE_USER.on_actionOpen_triggered()//c++实现的打开
	    }
            MenuItem {
                text: "Close"
                shortcut: StandardKey.Quit
                onTriggered: Qt.quit()
            }
        }
}
效果:

2.ListView实现的效果如下:


这种可以自定义你的菜单,自己写。下面贴出QML做的MenuBox.qml

import QtQuick 2.0

Rectangle {
    id:chosenItem
    property variant items: ""
    property alias text: chosenItemText.text//test别名,用于在mian.qml中传入text
    signal comboClicked;
    width: 60;
    height: 30;
    smooth:true;
    radius:4;
    color: "aliceblue"
    Text {
      id:chosenItemText
      anchors.centerIn: parent
      anchors.verticalCenter: parent.verticalCenter
      font.pointSize: 15
      font.bold:true
      fontSizeMode:Text.HorizontalFit
      style: Text.Raised

    }

    MouseArea {
        width: 60
        height: 20
        anchors.bottomMargin: 0
        anchors.fill: parent;
        onClicked: {
               chosenItem.state = chosenItem.state==="dropDown"?"":"dropDown"
        }
    }
    Rectangle {
         id:dropDown
         width:chosenItem.width;
         height:0;
         clip:true;
         radius:4;
         anchors.top: chosenItem.bottom;

         anchors.margins: 2;
         color: "aliceblue"

         ListView {
              id:listView
              height:500;
              model: chosenItem.items
              currentIndex: 0
              delegate: Item{
                      width:chosenItem.width;
                      height: chosenItem.height;

                      Text {
                          text: modelData

                          anchors.top: parent.top;
                          //anchors.left: parent.left;
                          anchors.horizontalCenter:parent.horizontalCenter
                          anchors.margins: 5;
                      }
                      MouseArea {
                            anchors.fill: parent;
                            onClicked: {
                                    chosenItem.state = ""
                                if(Item[0])
                                    FILE_USER.on_actionNew_triggered();
                                }
                      }
             }
        }
   }
   states: State {
            name: "dropDown";
            PropertyChanges {
                target: dropDown; height:30*chosenItem.items.length
            }
   }
   transitions: Transition {
                    NumberAnimation { target: dropDown; properties: "height"; easing.type: Easing.OutExpo; duration: 1000 }
   }
}

在main.qml中使用方法:

MenuBox{
                items: ["新建","打开","保存"]
                anchors.horizontalCenter:  parent.horizontalCenter
                text:"文件"
}
text是你的菜单名,items是菜单中的子名。通过在main.qml中传到上面的MenuBox中。方便使用。


【QML-Menu】 菜单栏由下拉菜单组成,通常位于窗口的顶部边缘。通常,菜单被静态地声明为菜单栏的子菜单,但是MenuBar也提供了API来动态地添加、插入、删除和获取菜单。MenuBarItem表示菜单栏中的菜单。我们可以当通过键盘、鼠标或触摸触发MenuBarItem时,会显示相应的下拉菜单。MenuBar 其实就是菜单栏,顾名思义其实就是放Menu的一个容器而已。 阅读详情

相关推荐

第45篇 QML控件类型 之 Menu(菜单)

1、Menu (1)点击左右键弹出菜单: import QtQuick 2.10 import QtQuick.Window 2.10 import QtQuick.Controls 2.3 Window { id: root visible: true width: 640 height: 480 MouseArea { anchors.fill: parent acceptedButtons: Qt.LeftButton

Fanjufei的博客 1560

QML控件类型:Menu

一、描述 可用作上下文菜单或弹出菜单的菜单弹出窗口。 当用作上下文菜单: MouseArea { anchors.fill: parent acceptedButtons: Qt.LeftButton | Qt.RightButton onClicked: { if (mouse.button === Qt.RightButton) contextMenu.popup() } onPressAndHold: {

友善啊,朋友的博客 3085

qml如何使用Repeater动态创建两个层级的Menu菜单

当你有这样一个需求,弹出两级菜单,一级菜单菜单项可能是Menu也可能是MenuItem,菜单项数量名称都是动态的,那么你就需要了解本篇文章介绍的方法,尤其注意一点对于Repeater这种方式创建的Menu组件,必须调用addMenu添加到父菜单,这可能是一个bug,如果不用addMenu添加,它显示不出来。如有疑问,欢迎留言咨询讨论。

lazydz的专栏 724

【QML】菜单

相关类型:MenuBar、Menu、MenuItem、MenuSeparator、Action 注意:本文基于Qt Quick Control 2,在帮助文档里搜索MenuBar,将弹出以下选项 前两个是旧的MenuBar,用法跟最新的不一样,import的时候注意import QtQuick.Controls 2.x,否则会提示错误 同样的事情发生在搜索Menu、MenuItem、MenuSeparator时,也是弹出多个版本,这也是qml很让人头疼的地方,同样名字的类型,往往存在多个不同时期、互不兼容

Kelvin_Yan的专栏 4278

QML学习 —— 33、弹出式菜单(附源码)

QML学习 —— 33、弹出式菜单(附源码)

264

QML 自定义Menu样式

QML 自定义Menu样式;QtQuick自定义菜单样式

Allen Roson 1396

QML 菜单控件:MenuBar、MenuBarItem、Menu、MenuItem层级关系和用法

在 GUI 开发中,菜单是用户交互的核心组件。QML 提供了一套灵活的菜单控件(MenuBar、Menu、MenuItem 等),本文将通过代码示例和图解,帮助理解它们的层级关系和用法。

u011186532的专栏 1584

激光工程师必备:5个ABCDRez在谐振腔设计中的实战技巧(含热效应处理)

本文为激光工程师分享了5个利用ABCDRez矩阵光学工具进行谐振腔设计的实战技巧,重点涵盖热效应处理、模式匹配优化与稳定性分析。通过建立参数化模型、动态热透镜补偿、模式匹配仿真及灵敏度分析,帮助工程师实现从“黑箱”到“白盒”的腔体设计与调试,提升激光器设计的鲁棒性与效率。

k6l7m8n9的博客 707

qml 实现自定义菜单menu,带有圆角矩形边框和阴影

import QtQuick 2.9 import QtQuick.Window 2.2 import QtGraphicalEffects 1.0 import QtQuick.Controls 2.15 Window { id: main visible: true width: 800 height: 600 color: "#CCCCCC" MouseArea { anchors.fill: parent acc.

a1317338022的博客 2047

【AI Infra】Perfetto性能分析工具指南

Perfetto是一款开源性能分析工具,提供系统级和应用级的活动数据追踪功能。其界面分为四个区域:左侧操作区(包含Trace查看、SQL查询、预置分析等功能)、上方信息区、中间图形化展示区以及下方详细信息区。工具支持快捷键操作(w/s缩放、a/d移动、m标记等),并能高效处理大体积Trace文件。通过Timeline分析可发现性能瓶颈,如案例中update_actor耗时过高的问题,最终定位到CPU offloading导致的MemcpyH2D操作耗时过长,提出了优化方案。Perfetto相比Systrac

baiweizeng的博客 1509

【C语言项目合集】这十个入门必备练手项目,让C语言对你来说不再难学!

适合刚入门C语言的编程学习小白的十个练手项目,每个都很经典且实用,让你学完C语言不再迷茫!

kxtxdy的博客 3万+

qml 菜单按钮Menu 弹出窗口Popup 侧滑抽屉Drawer

菜单按钮 Menu 有两种使用方法:1)上下文的菜单,即右键单击显示的菜单 2)弹出菜单,即单击按钮后显示的菜单 菜单种显示一个项目,用到MenuItem:提供一种熟悉的方式来响应被触发的菜单项。它有一个触发信号triggered()。 Menu的属性及方法大部分是Qt5.10引入的 属性 cascade : 保存菜单是否级联其子菜单 contentData : 保存内容数据列表 contentModel : 保存用于显示菜单项的模型 count : 保存项目数 currentIndex : 保存当前突出

qq_33373173的博客 5450

机器学习教程 之 半监督学习 Co-training 协同训练 (论文、算法、数据集、代码)

这篇博客介绍的是一篇用于半监督分类问题的方法: 协同训练 Co-training, A. Blum and T. Mitchell, “Combining labeled and unlabeled data with co-training,” in Proc. of the 11th Annual Conf. on Computational Learning Theory, 1998.,这算是半监督领域里面始祖级的论文了,是1998年两位CMU大佬提出的方法。 之前还写过一篇关于Tri-trainin

冯良骏 的 博客 1万+

qml Menu详解

QML 中的 Menu 是一个用于创建下拉菜单的控件,通常作为 MenuBar 的子元素出现。Menu 可以包含多个 MenuItem(菜单项),每个 MenuItem 代表一个可选的操作或子菜单。Menu 控件允许用户通过点击或键盘快捷键来访问这些操作。

ckg3824278的博客 845

3、基于视觉的智能分拣机:原理、算法与应用

本文介绍了一种基于视觉的智能分拣系统,利用树莓派、相机模块和多种检测算法实现低成本、高精度的物体分拣。系统支持颜色、形状和尺寸三种检测方式,准确率达99%,广泛适用于制造业、农业和物流等领域。文章详细阐述了各检测算法原理、测试结果及系统优化方向,并探讨了其实际应用案例与未来发展前景。

mqtt6iot的博客 237

2026星宸科技数字IC设计笔试带答案

摘要:本文包含四个计算机科学领域的编程与逻辑设计题目解析。第一部分通过C语言程序补充水仙花数判断代码,考查循环结构和函数设计;第二部分分析Verilog代码的D触发器电路,讨论时序约束与时钟频率影响;第三部分详细讲解静态时序分析中的建立/保持时间计算与违例判断;第四部分计算机体系结构题目涉及CPI、MIPS计算和性能加速比分析。最后还包含一个逻辑代数化简的示例,展示基本的布尔代数简化技巧。这些题目全面覆盖了编程基础、数字电路设计、时序分析和计算机性能评估等核心知识点。(149字)

Open 121

QML中的Menu

menu必须依附于MenuBar的存在,否则不会显示。动态添加菜单项如给id为testitem的Menu添加一个itemtestitem.additem(qsTr("item3"));动态添加的菜单绑定事件//类似于绑定一个匿名函数代码块 testitem.additem(qsTr("item3")).triggered.connected(function(){ });import QtQuick

LC900730的博客 5372

Codex入门19-数据库操作(解放双手:用自然语言写SQL、建表和数据迁移)

写 SQL 是后端开发的日常,但复杂的 JOIN、子查询、窗口函数总让人头疼。本文教你用 Codex CLI 实现:自然语言直接生成 CREATE TABLE、复杂 SQL 查询、数据库迁移脚本(Prisma/Knex/Alembic)、ORM 模型代码(SQLAlchemy/TypeORM)、甚至自动生成数据库文档。重点强调安全红线——永远不要让 AI 直接连接生产数据库。从需求描述到完整数据库层代码,一篇搞定。

yueyeguzhuo的专栏 234

QML menu 菜单的一些经验,方法

右键菜单的实现

kuanshu456的专栏 615

VS2019 C# 连接IBM DB2数据库并查询数据表

操作系统:win10 64位 C#:VS2019 数据库:IBM DB2v11.1_win64_expc 其他工具:IBM Data Studio ibm_ds4130_win 步骤一:使用命令行或是IBM DB2工具:Data Studio,创建一个数据库。这里名称为:Student CREATE DATABASE "Student" AUTOMATIC STORAGE YES ...

坚韧与专注 3796

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

QML QtQuick.Controls 2 MenuBar/Menu菜单样式自定义

版本:Qt5.12.5 ,参考Qt源码及文档示例 代码链接:https://github.com/gongjianbo/QmlComponentStyle.git 在Qt5.12的文档中你可以搜索到三个MenuBar组件,这里我修改的是Control2中的菜单栏样式,对比如下: 因为菜单栏及菜单项是多个组件组合而成的,都需要进行了自定义来统一风格: 样式修改也没什么好讲的,...

龚建波 6588

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

QML Menu 组件合集

本文展示了 QML Menu 组件的多种实现方式,从基础使用到高级自定义,包括:鼠标右键菜单、动态菜单、顶部菜单栏、快捷键菜单、可选项菜单和主题菜单等。

u011186532的专栏 660

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android qml 菜单,QML - ListView项目,用于显示菜单

当用户点击项目时,我正在寻找关于在列表项目下显示菜单的一些提示和指示 .如果我有这样的ListModel:ListModel {ListElement {name: "Bill Smith"number: "555 3264"}ListElement {name: "John Brown"number: "555 8426"}ListElement {name: "Sam Wise"number:...

weixin_39576133的博客 247

qt抽屉菜单_树莓派Qt系列教程26:Menu、Popup和Drawer

前言这一节继续为大家讲解QML中一些比较有意思的控件。这一节我们要说的控件是菜单按钮Menu、弹出窗口Popup和侧滑抽屉Drawer。菜单按钮 MenuMenu其实就是我们打来一个软件时出现的菜单项,菜单主要有两个使用方法,第一个是用作上下文菜单,比如说右键单击后显示的菜单。还有一个就是用作弹出菜单,比如说单击按钮后显示的菜单。通常,我们想要在菜单中显示一个项目,需要用到MenuItem,它提供...

weixin_39543773的博客 1157

QML鼠标右键菜单

/

遇己 984

qml Menu菜单自定义背景、字体等属性

【代码】qml Menu菜单自定义背景、字体等属性。

twtongwei的博客 747
上一篇: qml与c++混合编程之简单demo说明
下一篇: QML之添加应用程序图标
艺丢丢
博客等级 码龄12年 16粉丝 52原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值