在我的MainWindow中,我有一个按钮和一个菜单栏项,它们的信号都连接到同一个槽。在槽函数中,我已经编写了以下内容:
mainWindow->setCursor(QCursor(Qt::WaitCursor));
当通过按钮调用插槽函数时,这个功能按预期工作;然而,当从菜单中调用相同的函数时,等待光标不会出现。有任何想法为什么会这样?
我也考虑过使用QApplication::setOverrideCursor,但那会引起其他问题。
有什么建议吗?谢谢!
(我正在使用Qt 4.7,在Windows 7上使用Qt Creator和默认的MinGW编译器进行开发。)
以下是更详细的信息。
在MainWindow构造函数中:
this->setCursor(Qt::CrossCursor);
信号/插槽连接:QObject::connect(button, SIGNAL(clicked()), MainWindow, SLOT(showMessageBox()));
QObject::connect(action, SIGNAL(triggered()), MainWindow, SLOT(showMessageBox()));
showMessageBox函数:
void MainWindow::showMessageBox()
{
this->setCursor(Qt::WaitCursor);
// display wait cursor briefly before showing message box
for (int i = 0; i < 1<<30; ) {++i;}
QMessageBox msgBox;
msgBox.setText("Hello!");
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.setCursor(Qt::PointingHandCursor);
msgBox.exec();
this->setCursor(Qt::CrossCursor);
}
当使用'button'调用
showMessageBox
时,等待光标会按预期显示。当通过'action'调用
showMessageBox
时,等待光标不会出现;相反,光标从Qt :: CrossCursor更改为Qt :: ArrowCursor,一旦用户选择“操作”菜单项,然后在消息框打开时更改为Qt :: PointingHandCursor。等待光标从未出现。