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

sas*_*alm 38 c++ qt cursor

我产生了一个执行冗长操作的过程,我想给出视觉反馈,说明发生了什么,所以我想将光标更改为忙,并在收到QProcess::finished信号时恢复它.

Kam*_*mek 63

Qsiris解决方案是"小部件宽".如果要更改整个应用程序的光标,请使用

QApplication::setOverrideCursor(Qt::WaitCursor);
Run Code Online (Sandbox Code Playgroud)

QApplication::restoreOverrideCursor();
Run Code Online (Sandbox Code Playgroud)

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

  • 不要原谅光标在触发下一个QT事件或手动调用`QApplication :: processEvents()`之前不会改变 (12认同)
  • @EhsanKhodarahmi:我认为你的意思是"别忘了",但经过一个小时的摔跤与这个问题,"不要原谅"也很有效.感谢您的提醒. (7认同)

Qsi*_*ris 22

使用此选项将光标设置为在进程开始时等待:

this->setCursor(Qt::WaitCursor);
Run Code Online (Sandbox Code Playgroud)

这将光标恢复正常(将其放入QProcess :: finished的插槽中)

this->setCursor(Qt::ArrowCursor);
Run Code Online (Sandbox Code Playgroud)

  • 要恢复光标,最好使用“unsetCursor()”。它将继承父光标,这是显式设置之前的行为:https://doc.qt.io/qt-5/qwidget.html#cursor-prop (3认同)