我正在使用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
}
}
注意:遗憾的是我还不能发布游标的图片,因为我没有足够的代表。
答案 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()