将光标更改为沙漏/等待/忙碌光标并返回 Qt

Posted

技术标签:

【中文标题】将光标更改为沙漏/等待/忙碌光标并返回 Qt【英文标题】:Change cursor to hourglass/wait/busy cursor and back in Qt 【发布时间】:2012-11-09 19:45:51 【问题描述】:

我生成了一个执行冗长操作的进程,并且我想给出正在发生的事情的视觉反馈,因此我想将光标更改为忙,并在收到QProcess::finished 信号时恢复它。

【问题讨论】:

【参考方案1】:

使用它来设置光标在进程开始时等待:

this->setCursor(Qt::WaitCursor);

这可以使光标恢复正常(把它放在 QProcess::finished 的槽中)

this->setCursor(Qt::ArrowCursor);

【讨论】:

要恢复光标,最好使用unsetCursor()。它将继承父光标,这是显式设置之前的行为:doc.qt.io/qt-5/qwidget.html#cursor-prop【参考方案2】:

Qsiris 解决方案是“widget wide”。如果要更改整个应用程序的光标,请使用

QApplication::setOverrideCursor(Qt::WaitCursor);

QApplication::restoreOverrideCursor();

注意:正如@Ehsan Khodarahmi 指出的,在触发下一个QT 事件或手动调用QApplication::processEvents() 之前,光标不会改变。

【讨论】:

在触发下一个QT事件或手动调用QApplication::processEvents()之前,光标不会改变 @EhsanKhodarahmi:我认为您的意思是“不要忘记”,但是在与这个问题争论了一个小时之后,“不要原谅”也很有效。谢谢提醒。 注意这种方式不会阻塞UI,如果你的应用是基于QWidget的,你可以使用setEnabled(false)

以上是关于将光标更改为沙漏/等待/忙碌光标并返回 Qt的主要内容,如果未能解决你的问题,请参考以下文章

将鼠标光标更改为等待光标,然后启动工作线程并在线程完成时改回

无需用户移动鼠标即可将浏览器光标从“等待”变为“自动”

AJAX 光标 - Sharepoint Visual Webpart

如何在 WPF 应用程序启动期间显示等待光标?

C# Winforms - 更改鼠标的光标图标

使用 Windows 窗体应用程序时如何将鼠标光标更改为自定义光标?