0

我正在使用 Qt for C++ 并且有一个 dropEvent 可以打开一个对话框。但是,当对话框打开时,鼠标光标会保留放置光标,而不是返回到通用默认光标。这是一种奇怪的行为,尤其是在单击对话框上的按钮时。下面是我的 dropEvent 代码的粗略轮廓。

MyClass::dropEvent(QDropEvent *event)
{
   //do some stuff
   event->accept();

   MyDialog::runDialog(arg1, arg2, arg3);
}

MyDialog::runDialog(arg1, arg2, arg3)
{
   MyDialog dlg(arg1, arg2, arg3);

   if(dlg.exec() == QDialog::Accepted)
   {
      //do some stuff
   }
}

注意:不幸的是我还不能发布游标的图片,因为我没有足够的代表。

4

2 回答 2

0

我会做:

QApplication::restoreOverrideCursor()
于 2014-09-02T14:30:11.950 回答
0

下面是我正在使用的一种解决方法,因为将对话框代码从 exec 更改为 show 是不可行的。

MyClass::MyClass()
{
   //qRegisterMetaType was necessary for two of my parameters.
   qRegisterMetaType<arg1>("arg1");
   qRegisterMetaType<arg2>("arg2");
   connect(this, SIGNAL(signalDialog(arg1, arg2, arg3)), this, SLOT(runDialog(arg1, arg2, arg3)), Qt::QueuedConnection);
}

MyClass::dropEvent(QDropEvent *event)
{
   //do some stuff
   event->accept();

   emit signalDialog(arg1, arg2, arg3);
}

MyClass::runDialog(arg1, arg2, arg3)
{
  MyDialog::runDialog(arg1, arg2, arg3);
}

MyDialog::runDialog(arg1, arg2, arg3)
{
   MyDialog dlg(arg1, arg2, arg3);

   if(dlg.exec() == QDialog::Accepted)
   {
      //do some stuff
   }
}

光标已正确更改回默认值。

于 2013-05-02T20:18:47.810 回答