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()
        }
    }
相关推荐
jz_ddk2 小时前
[学习] C语言多维指针探讨(代码示例)
linux·c语言·开发语言·学习·算法
艾莉丝努力练剑7 小时前
深入详解编译与链接:翻译环境和运行环境,翻译环境:预编译+编译+汇编+链接,运行环境
c语言·开发语言·汇编·学习
杏仁海棠花饼9 小时前
杏仁海棠花饼的学习日记第十四天CSS
前端·css·学习
Yurko139 小时前
【C语言】函数指针及其应用
c语言·开发语言·学习
明月清了个风10 小时前
数据结构与算法学习笔记(Acwing 提高课)----动态规划·区间DP
笔记·学习·动态规划
萌新小码农‍10 小时前
Spring框架学习day3--Spring数据访问层管理(IOC)
java·学习·spring
编码小笨猪10 小时前
[ Qt ] | QPushButton常见用法
开发语言·qt
L下自成蹊L10 小时前
4. Qt对话框(2)
开发语言·qt·对话框·登录对话框
hu556679812 小时前
Astra学习之-如何修改Header-logo和favicon图标
学习·astra
cui_win13 小时前
LangChain 和 LangChain-ChatChat 的区别
学习·ai·langchain