• 7548阅读
  • 4回复

[提问]setCursor()函数中如何改变鼠标样式-已解决 [复制链接]

上一主题 下一主题
离线uiprofans
 

只看楼主 正序阅读 楼主  发表于: 2013-03-25
问题描述如下:
操作系统:win7
编程环境:VC2008+QT4
classA 继承自 QMainWindow
funA是classA的函数
void classA::funA()
{
....
setCursor(Qt::WaitCursor);
处理代码(大概耗时1-3分钟)
setCursor(Qt::ArrowCursor);
}
我的目的是在上述“处理代码”运行时,classA所对应的窗口中将鼠标样式改为“等待”样式,以显示当前程序正在进行数据处理。
实际情况是:
1. 上述代码无法实现我的目的;
2. 如果我把“setCursor(Qt::ArrowCursor);”这行代码注释掉,则在进行数据处理时鼠标样式不会改变,但在数据处理结束后鼠标样式会改成等待样式。

有经验的各位帮忙看看,如何使得程序在进行数据处理时鼠标样式显示为“等待”样式?多谢了。
离线XChinux

只看该作者 4楼 发表于: 2013-03-26
你把两个setcursor全放在构造函数中不妥吧。setcursor之后调用一下qapplication::processevents()
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线圣域天子

只看该作者 3楼 发表于: 2013-03-26
建议你用它封装一个类。

自己想想怎么做以后使用起来最方便 ...  ^_^
离线uiprofans

只看该作者 2楼 发表于: 2013-03-26
嗯,试了一下,效果出来了,完整起见,在此贴出调试之后的结果:

void classA::funA()
{
....
  // setCursor(Qt::WaitCursor);

QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
处理代码(大概耗时1-3分钟)
QApplication::restoreOverrideCursor();

//setCursor(Qt::ArrowCursor);
}
离线圣域天子

只看该作者 1楼 发表于: 2013-03-26
你用错方法了,和我以前一样绕了个圈子:

应该是这两条:
等待:
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
恢复:
QApplication::restoreOverrideCursor();
快速回复
限100 字节
 
上一个 下一个