Qt Quick - Menu

news/2024/12/30 1:53:03/

Qt Quick - Menu使用总结

  • 一、概述
  • 二、上下文菜单
  • 三、弹出式菜单
  • 四、子菜单和Action
  • 五、美化

一、概述

Menu其实就是Qt Quick里面的菜单控件,一般来说。

Menu有两种主要用例:

  • 上下文菜单;例如,右键单击后显示的菜单
  • 弹出菜单;例如,单击按钮后显示的菜单

在有鼠标光标可用的桌面平台上,子菜单是默认级联的。非级联菜单一次显示一个菜单,并且位于父菜单的中央。

通常,菜单项被静态声明为菜单的子菜单项,但menu也提供了动态添加、插入、移动和删除菜单项的API。

可以使用itemAt()或contentChildren访问菜单项。
虽然MenuItems最常与Menu一起使用,但它可以包含任何类型的 Item,其实就是用 MenuItem去封装一下菜单项的意思。

二、上下文菜单

在这里插入图片描述

如果用作上下文菜单,推荐的打开菜单的方式是调用popup()。除非明确指定位置,否则在有鼠标光标可用的桌面平台上,菜单将定位在鼠标光标上,否则将位于其父项目的中心。

  MouseArea {anchors.fill: parentacceptedButtons: Qt.LeftButton | Qt.RightButtononClicked: {if (mouse.button === Qt.RightButton)contextMenu.popup()}onPressAndHold: {if (mouse.source === Qt.MouseEventNotSynthesized)contextMenu.popup()}Menu {id: contextMenuMenuItem { text: "Cut" }MenuItem { text: "Copy" }MenuItem { text: "Paste" }}}

三、弹出式菜单

在这里插入图片描述

在作为弹出式菜单使用时,最简单的方法是通过各自的属性指定所需的x和y坐标,然后调用open()来打开菜单。

  Button {id: fileButtontext: "File"onClicked: menu.open()Menu {id: menuy: fileButton.heightMenuItem {text: "New..."}MenuItem {text: "Open..."}MenuItem {text: "Save"}}}

四、子菜单和Action

在这里插入图片描述

因为QtQuick.control 2.3 (Qt 5.10),也可以在Menu中创建子菜单并声明动作Action:,就比如在Qt里面的 QMenu的子项就是 QAction;

  Menu {Action { text: "Cut" }Action { text: "Copy" }Action { text: "Paste" }MenuSeparator { }Menu {title: "Find/Replace"Action { text: "Find Next" }Action { text: "Find Previous" }Action { text: "Replace" }}}

五、美化

在这里插入图片描述

  import QtQuick 2.12import QtQuick.Controls 2.12Menu {id: menuAction { text: qsTr("Tool Bar"); checkable: true }Action { text: qsTr("Side Bar"); checkable: true; checked: true }Action { text: qsTr("Status Bar"); checkable: true; checked: true }MenuSeparator {contentItem: Rectangle {implicitWidth: 200implicitHeight: 1color: "#21be2b"}}Menu {title: qsTr("Advanced")// ...}topPadding: 2bottomPadding: 2delegate: MenuItem {id: menuItemimplicitWidth: 200implicitHeight: 40arrow: Canvas {x: parent.width - widthimplicitWidth: 40implicitHeight: 40visible: menuItem.subMenuonPaint: {var ctx = getContext("2d")ctx.fillStyle = menuItem.highlighted ? "#ffffff" : "#21be2b"ctx.moveTo(15, 15)ctx.lineTo(width - 15, height / 2)ctx.lineTo(15, height - 15)ctx.closePath()ctx.fill()}}indicator: Item {implicitWidth: 40implicitHeight: 40Rectangle {width: 26height: 26anchors.centerIn: parentvisible: menuItem.checkableborder.color: "#21be2b"radius: 3Rectangle {width: 14height: 14anchors.centerIn: parentvisible: menuItem.checkedcolor: "#21be2b"radius: 2}}}contentItem: Text {leftPadding: menuItem.indicator.widthrightPadding: menuItem.arrow.widthtext: menuItem.textfont: menuItem.fontopacity: enabled ? 1.0 : 0.3color: menuItem.highlighted ? "#ffffff" : "#21be2b"horizontalAlignment: Text.AlignLeftverticalAlignment: Text.AlignVCenterelide: Text.ElideRight}background: Rectangle {implicitWidth: 200implicitHeight: 40opacity: enabled ? 1 : 0.3color: menuItem.highlighted ? "#21be2b" : "transparent"}}background: Rectangle {implicitWidth: 200implicitHeight: 40color: "#ffffff"border.color: "#21be2b"radius: 2}}

http://www.ppmy.cn/news/45182.html

相关文章

如何安装 Python 的第三方模块

入门教程、案例源码、学习资料、读者群 请访问: python666.cn 大家好,欢迎来到 Crossin的编程教室 ! 正所谓“人生苦短,我用 Python”。Python 的一大优势就是有丰富且易用的第三方模块,省去了大量重复造轮子的时间&am…

【PTA-训练day28】L2-044 大众情人 + L2-043 龙龙送外卖 + L2-042 老板的作息表

目录 L2-044 大众情人 - 多源最短路 floyd L2-043 龙龙送外卖 - 树 dfs 贪心 L2-042 老板的作息表 - 排序 字符串 L2-044 大众情人 - 多源最短路 floyd PTA | 程序设计类实验辅助教学平台 思路: 求某两点间最短路,用floyd算法【蓝桥杯集训16】多源…

前端中font的使用

知识点&#xff1a; 运行截图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta http-equiv"X-UA-Compatible" content"IEedge"> <meta name&…

小程序组件的生命周期

组件生命周期 组件的生命周期&#xff0c;指的是组件自身的一些函数&#xff0c;这些函数在特殊的时间点或遇到一些特殊的框架事件时被自动触发。 其中&#xff0c;最重要的生命周期是 created attached detached &#xff0c;包含一个组件实例生命流程的最主要时间点。 …

Java就业前景如何?

Java还有出路吗&#xff1f; 2023年的就业市场依然经历着面临挑战&#xff0c;很多有经验有技术的人被淘汰下来&#xff0c;而马上又有一千多万的新鲜血液涌入就业市场。经济大环境对于各行各业的影响是非常大的&#xff0c;也为IT行业的内卷推波助澜。在2023年想学习Java入行就…

智慧养老平台建设方案word

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除。 1、 总体设计 1.1 建设原则 养老机构智能化管理工程是一项涉及多学科知识的复杂的系统工程&#xff0c;养老机构智能化管理围绕机构发展战略&#xff0c;立足机构需求&…

Reactor设计模式

一、Reactor设计模式 1、什么是Reactor设计模式&#xff1f; Reactor模式是高性能I/O设计中&#xff0c;常用的设计模式。其中心思想是将所有要处理的I/O事件注册到一个中心I/O多路复用器上&#xff0c;同时主线程阻塞在多路复用器上&#xff0c;一旦有I/O事件到来或是准备就绪…

stegano(图片隐写、摩斯密码)

附件是PDF&#xff0c;我们在选择内容时发现光标溢出了文本 说明这里还存在一些我们看不到的内容 直接CtrlA全选&#xff0c;CtrlC复制后新建一个纯文本文件 将复制的东西粘贴过去 粘贴后发现果然多出来了一些东西&#xff0c;提取出来 BABA BBB BA BBA ABA AB B AAB ABAA A…