更改光标会隐藏光标
Changing cursor hides the cursor
在我的Qt应用程序中,当应用程序关闭时,我正在保存一些数据。保存数据是在closeEvent(QCloseEvent*)方法中执行的。我想在保存数据之前更改光标,并在保存后将其恢复。
根据我在互联网上读到的内容,setCursor(constQCursor&)不能全局工作,只能在某些特定小部件的范围内工作。因此,我尝试使用WinAPI中的SetCursor(HCURSOR)。
代码如下:
void mainWin::closeEvent( QCloseEvent* e ) {
SetCursor( LoadCursor( GetModuleHandle( NULL ), ( LPCWSTR )IDC_WAIT ) );
saveData();
SetCursor( LoadCursor( GetModuleHandle( NULL ), ( LPCWSTR )IDC_ARROW ) );
e->accept();
}
然而,第一个SetCursor()方法只是在保存数据时隐藏光标,而不是将其更改为某种沙漏。为什么?
您应该使用QApplication::setOverrideCursor
,它将更改整个应用程序的光标。
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
saveData();
QApplication::restoreOverrideCursor();
当然,当您创建光标时,您可以提供自己的像素图。您可以做的另一件有趣的事情是创建一个RAII类来处理自定义光标。在构造函数中调用setOverrideCursor
,在析构函数中调用restoreOverrideCursor
。当您有很多地方想要更改光标并在范围的末尾自动恢复光标时,这样做非常方便。另一个优点是,如果saveData
方法抛出,那么无论如何都会重置光标,这非常好。
相关文章:
- 如何在Qt C++中更改光标
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- 结构和双指针隐藏在其他结构中,多层混淆
- 在 cpp 文件中隐藏采用模板参数引用的方法
- 参数包构造函数在类模板中隐藏用户定义的转换
- 如何等待窗口隐藏在Qt中?
- 如何使用类型别名从模板化类中隐藏模板列表
- 在设计 SDK 时,我是否应该在 C++ 头文件中完全隐藏内部类?
- Win32 API 控制台光标在 WriteConsole 后不移动
- 在 macOS 中使用 C/C++ 设置鼠标光标图像
- 名称隐藏对静态函数继承的实例使用
- 在 Linux 中使用 ioctl() 获取隐藏功能报告时,零字节消失
- 从多个模板化基类派生时出现"隐藏重载的虚函数"警告
- 如何在 Omnet++ 5.6.1 中隐藏箭头?
- 在C++中隐藏键盘记录器的控制台窗口
- 如何在XCB中隐藏光标?
- ShowCursor(FALSE) 不会在控制台应用程序上隐藏光标
- 如何将光标隐藏在QML中
- 更改光标会隐藏光标
- 不可能在应用程序启动后立即使用ShowCursor(FALSE)隐藏鼠标光标