在drop事件后打开对话框时,Qt鼠标光标不会改变

时间:2013-05-01 19:19:47

标签: c++ drag-and-drop qt4

我正在使用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
   }
}

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

2 个答案:

答案 0 :(得分: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
   }
}

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

答案 1 :(得分:0)

我愿意:

QApplication::restoreOverrideCursor()
相关问题