7

マウス領域からマウスの絶対位置を取得するには? ポップアップを正しい位置に表示する必要があります

Item {
    Menu {
        id: menu
        MenuItem {
            onTriggered: {
               // Need Mouse absolute position
            }
        }
    }
    MouseArea {
        id: mouseArea
        anchors.fill: parent
        onClicked: {
            menu.popup()
        }
    }
4

4 に答える 4

6

あなたはおそらくすでに答えを見つけているでしょうが、同じことを探している他の人のために私の解決策をここに置きます.

以下の関数は、マウス領域の絶対位置を見つけます。そして、それに応じて mouseX と mouseY を追加して、マウスの位置を取得できます。

Item {
  Menu {
    id: menu
    MenuItem {
      onTriggered: {
        var absolutePos = getAbsolutePosition(source);
        // Need Mouse absolute position
      }
    }
  }
  MouseArea {
    id: mouseArea
    anchors.fill: parent
    onClicked: {
      menu.popup()
    }
  }
  function getAbsolutePosition(node) {
      var returnPos = {};
      returnPos.x = 0;
      returnPos.y = 0;
      if(node !== undefined && node !== null) {
          var parentValue = getAbsolutePosition(node.parent);
          returnPos.x = parentValue.x + node.x;
          returnPos.y = parentValue.y + node.y;
      }
      return returnPos;
  }
}
于 2015-01-28T07:25:32.880 に答える
0

マウス エリア ( http://qt-project.org/doc/qt-5.0/qtquick/qml-qtquick2-mousearea.html#onClicked-signal )の onClicked シグナルのドキュメントを確認すると、MouseEvent という名前のパラメーターが与えられます。ねずみ。MouseEvent オブジェクト ( http://qt-project.org/doc/qt-5.0/qtquick/qml-qtquick2-mouseevent.html ) を使用すると、onClick ハンドラー内のマウス位置にアクセスできます。

mouse.x
mouse.y
于 2013-10-17T14:16:10.037 に答える