将光标更改为沙漏/等待/忙碌光标并返回 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的主要内容,如果未能解决你的问题,请参考以下文章
将鼠标光标更改为等待光标,然后启动工作线程并在线程完成时改回