如何替换QML程序中的所有光标外观?

时间:2017-07-14 09:19:42

标签: qt cursor qml

我正在开发一款将QML用于其UI的游戏。

我想用一次更符合游戏风格的游标样式替换所有游标样式(例如指向手指而不是正常的Qt::ArrowCursor)。

调用QGuiApplication::setOverrideCursor()接缝而非是一个实用的解决方案,因为我无法覆盖"每个MouseArea来调用replaceCursor()魔法全局函数。例如,光标位于TableView内的更改列目前无法进行操作。

对我来说,最实用的解决方案是替换所有游标的外观,但将Qt与任务一起正确选择光标样式。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您仍然可以使用QGuiApplication::setOverrideCursor()来装饰鼠标区域。它的工作方式类似于堆栈,您可以设置然后恢复游标,因此您首先从main.cpp设置初始游标,然后使用"重载" MouseArea也使用setOverrideCursor()设置其光标,而不是使用QML功能。

例如:

onContainsMouseChanged: {
  if (containsMouse) Sys.setOverrideCursor(yourCursortype)
  else Sys.restoreOverrideCursor()
}

当然,这意味着您必须创建一个辅助对象,该对象将从C ++调用这些函数,并将其公开给QML,以便可以从那里调用它。