QML鼠标右键菜单

原理非常简单,先写个Menu ,通过MouseArea 来填充需要右键菜单的区域。然后在onClicked 信号中,让Menux、y 等于当前鼠标的x、y ,最后用调用Menu的**open()**方法将菜单在该位置显示出来。

javascript 复制代码
import QtQuick
import QtQuick.Controls.Material
import QtQuick.Controls

Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("右键菜单演示")

    Menu
    {
        id: rightMenu

        MenuItem
        {
            text: "复制"
            icon.source: "imgs/复制.png"
        }
        MenuItem
        {
            text: "粘贴"
            icon.source: "imgs/粘贴.png"
        }
        MenuItem
        {
            text: "剪贴"
            icon.source: "imgs/剪贴.png"
        }
    }

    MouseArea
    {
        anchors.fill: parent
        acceptedButtons: Qt.RightButton //接收鼠标右键
        
        onClicked:
        {
            rightMenu.x = mouseX
            rightMenu.y = mouseY
            rightMenu.open()
        }
    }
}

运行效果截图如下:

这里有2点需要注意一下,1个是接收鼠标右键:acceptedButtons: Qt.RightButton 。还有个是获取当前鼠标的位置x、y。

获取鼠标的位置有2种写法,我上面贴出的是简单一点的写法,还有一种稍微有一点不同,但是2种写法都能正常运行,以我目前的菜鸟水准也看出这2者之间的区别在哪。

第2中写法代码如下:

javascript 复制代码
MouseArea
    {
        anchors.fill: parent
        acceptedButtons: Qt.RightButton //接收鼠标右键

        onClicked: (mouse)=>
        {
            rightMenu.x = mouse.x
            rightMenu.y = mouse.y
            rightMenu.open()
        }
    }
相关推荐
做cv的小昊11 小时前
【TJU】信息检索与分析课程笔记和练习(7)数据库检索—Ei
数据库·笔记·学习·全文检索
AI360labs_atyun11 小时前
上海打出“开源”国际牌!2025重磅新政
人工智能·科技·学习·ai·开源
Chris_121912 小时前
Halcon学习笔记-Day6:工业视觉高级技术应用与实战项目
笔记·学习·halcon
GHL28427109012 小时前
调用通义千问(qwen-plus)模型demo-学习
学习·ai·ai编程
wdfk_prog14 小时前
[Linux]学习笔记系列 -- [fs]super
linux·笔记·学习
GHL28427109014 小时前
Temperature、Top P 学习
学习·ai
Yyuanyuxin14 小时前
保姆级学习开发安卓手机软件(三)--安装模拟机并开始简单的进入开发
android·学习
雒珣14 小时前
Qt简单任务的多线程操作(无需创建类)
开发语言·qt
不爱编程爱睡觉14 小时前
代码随想录学习——项目学习——HTTP服务框架——环境配置问题
学习
Darkershadow14 小时前
蓝牙学习之unprovision beacon
python·学习·ble