设置窗口鼠标形状 void QWindow::setCursor(const QCursor &cursor)
鼠标光标位于此窗口上时将采用此形状,除非设置了覆盖光标。Qt预定义了一系列有用的鼠标形状。列表如下:
![6fc7ebbc35a74b2aa05224eda1624ee3.png](https://i-blog.csdnimg.cn/blog_migrate/ad572f43a251831128bc65d1aaa895d3.png)
setCursor(const QCursor &cursor)使用:
this->setCursor(Qt::CrossCursor); // this也可改为其他控件
如果未设置光标形状,或者在调用 unsetCursor() 之后,则使用父窗口的光标形状。默认情况下,光标形状为 Qt::ArrowCursor ,即箭头光标。
如果光标离开窗口,即使鼠标被抓住,某些基础窗口实现也会重置光标。如果要为所有窗口设置光标,即使在窗口外,也可以考虑QGuiApplication::setOverrideCursor()。
[static] void QGuiApplication::setOverrideCursor(const QCursor &cursor)
将应用程序覆盖光标设置为光标。应用程序重写游标用于向用户显示应用程序处于特殊状态,例如在可能需要一些时间的操作期间。此光标将显示在应用程序的所有小部件中,直到调用 restoreOverrideCursor() 或其他 setOverrideCursor()。应用程序光标存储在内部堆栈上。setOverrideCursor() 将光标推送到堆栈上,而 restoreOverrideCursor() 将活动光标从堆栈中弹出。changeOverrideCursor()更改当前活动的应用程序覆盖光标。每个 setOverrideCursor() 最终必须跟上相应的 restoreOverrideCursor(),否则堆栈将永远不会被清空。
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
calculateHugeMandelbrot(); // lunch time...
QApplication::restoreOverrideCursor();
[static] void QGuiApplication::restoreOverrideCursor()
撤消最后一个 setOverrideCursor()。
如果 setOverrideCursor() 被调用了两次,调用 restoreOverrideCursor() 将激活第一个光标集。再次调用此函数将恢复原始小部件的光标。
[static] QCursor *QGuiApplication::overrideCursor()
返回活动应用程序覆盖光标。如果未定义应用程序光标(即内部光标堆栈为空),则此函数返回 0。
[static] void QGuiApplication::changeOverrideCursor(const QCursor &cursor)
改变当前活动应用程序覆盖光标为指定光标。如果setOverrideCursor()没有被调用,该函数没有效果。
后续公众号会发布系列教程,更多内容请关注公众号:程序猿学习日记