如何在不使用MouseArea的情况下更改光标的形状?

Isp*_*diu 5 cursor qml qt5 qtquick2 qtquickcontrols

我查看了类似的线程,但并没有太大帮助。

我使用QtQuick.Controls.Buttonin QML,将鼠标悬停在按钮上时无法更改光标形状!我想不使用实现此目的MouseArea。该怎么办?当我查看文档时,找不到cursorShape属性或类似属性。

Yoa*_*ann 11

这是一种黑客行为,但您可以通过伪私有属性访问Button自己MouseArea__behavior

Button {
    text: qsTr("Hello World")
    Component.onCompleted: __behavior.cursorShape = Qt.PointingHandCursor
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以非常轻松地创建自己的改进Button

import QtQuick 2.3
import QtQuick.Controls 1.2

Button {
    property alias cursorShape: mouseArea.cursorShape

    MouseArea
    {
        id: mouseArea
        anchors.fill: parent
        onPressed:  mouse.accepted = false
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,您可能需要显式导入,你所定义的QML模块Button,以掩盖QtQuick.ControlsButton