• 8630阅读
  • 4回复

[提问]QML如何实现鼠标右键菜单,求助 [复制链接]

上一主题 下一主题
离线黑幕月色
 

只看楼主 倒序阅读 楼主  发表于: 2015-01-11
可以的话帮忙写一小段我参考一下,比如说我右键后弹出一个类似网页的 复制黏贴菜单  谢谢
离线咬蚊嚼渍

只看该作者 1楼 发表于: 2015-01-11
用MouseArea就可以实现,只要改一下acceptedButtons就好,参考如下:
MouseArea{
        anchors.fill: parent;
        acceptedButtons: Qt.LeftButton | Qt.RightButton ;
        onReleased: {
            console.log("onReleased", mouse.button);
            if(mouse.button == Qt.RightButton){
                console.log("MouseArea RightButton");
            }else{
                console.log("MouseArea LeftButton");
            }
        }
    }

有时间就看看文档还是比较好的,QT的文档非常棒
离线咬蚊嚼渍

只看该作者 2楼 发表于: 2015-01-11
然后在这里,右键的时候可以捕捉到mouseX和mouseY,再在这个Point(mouseX, mouseY)出现个小界面就OK了
离线咬蚊嚼渍

只看该作者 3楼 发表于: 2015-01-11
好吧,反正无聊,写了个例子,你可以把Loader改一下来实现你需要的功能。
MouseArea{
        id:mouseMA;
        anchors.fill: parent;
        acceptedButtons: Qt.LeftButton | Qt.RightButton ;
        onReleased: {
            console.log("onReleased", mouse.button);
            if(mouse.button == Qt.RightButton){
                console.log("MouseArea RightButton");
                loaderRightMenu.x = mouseMA.mouseX;
                loaderRightMenu.y = mouseMA.mouseY;
                loaderRightMenu.visible = true;
            }else{
                console.log("MouseArea LeftButton");
                loaderRightMenu.visible = false;
            }
        }
    }

    Loader{
        id:loaderRightMenu;
        visible: false;
        enabled: visible;
        sourceComponent: Component{
            id:compRightMenu;
            Rectangle{
                color: "black";
                width: 50;
                height: 100;
            }
        }
    }
离线黑幕月色

只看该作者 4楼 发表于: 2015-01-12
回 咬蚊嚼渍 的帖子
咬蚊嚼渍:好吧,反正无聊,写了个例子,你可以把Loader改一下来实现你需要的功能。
MouseArea{
        id:mouseMA;
        anchors.fill: parent;
        ac .. (2015-01-11 21:53) 

谢谢! 刚接触QML 不是很熟悉,谢谢你的例子~
快速回复
限100 字节
 
上一个 下一个