在Modal QDialog关闭后,父窗口小部件不响应第一次鼠标单击,在mousemoveevent()中调用done()关闭QDialog,这导致在关闭对话框后仍然按下鼠标按钮,第二次单击将继续正常工作。
到目前为止我的发现:
如果在done(int)
中调用了MouseReleaseeEvent()
,则一切都按预期工作
似乎QDialog
缺少MouseButtonRelease
事件(由于MouseButtonPress
事件已被关闭,因此QDialog
已被关闭MouseMoveEvent
这会弄乱父窗口小部件的鼠标事件。
我的目的是制作一个可以通过滑动关闭的QDialog
,当它检测到鼠标被按下并移动到某个位置时,它将被关闭。
非常感谢所有以前遇到过这种情况的人,或者知道发生了什么的人给我一些建议。
非常感谢。
此外,这是我第一次在这里发帖提问,如果我错过了我想提供的任何信息,请告诉我......
答案 0 :(得分:0)
这很完美,没有任何动画,但可以添加。基本上它的作用是在鼠标开始移动时寻找x坐标的差异,如果它高于或低于2(向左或向右滑动)它将关闭对话框。
int x;
void MyDialog::mousePressEvent(QMouseEvent * event) {
x = event->globalPos().x();
}
void MyDialog::mouseReleaseEvent(QMouseEvent * event) {
int diff = x - event->globalPos().x();
qDebug(tr("released").arg(diff).toUtf8().constData());
if (diff > 2 || diff < -2) QDialog::close();
}
我没有看到任何问题。