【发布时间】:2014-05-16 15:19:58
【问题描述】:
随着学习曲线的上升,到目前为止一切都变得有意义,除了这个:
我有一个主窗口,我可以在其中调用一个或多个这样的对话框:
d->setWindowFlags(Qt::CustomizeWindowHint | Qt::Window | Qt::FramelessWindowHint);
d->setGeometry(等...
d->show();
对话框没有绑定到主窗口,它们实际上被设置为显示在主窗口旁边,看起来像一个扩展。
要关闭对话框,我在主窗口上使用鼠标“enterEvent”向将使用 hide() 的对话框发送关闭信号。
void MainWidget::enterEvent(QEvent *event)
{
发出 signal_related_close();
}
这可行,但随机会导致一个非常烦人的问题。当发送信号以关闭对话框时,主窗口将失去焦点并进入后台(在屏幕上的任何应用程序后面)。请注意,它不会最小化,而只会进入后台,就像我说的那样,它是随机的(大约 3 次我这样做)。我似乎找不到模式。
我最初认为信号被搞砸了,而是使用了 dialog::leaveEvent() ,但这并没有帮助。我还尝试使用 dialog::mouseMoveEvent 并使用它来隐藏对话框,但这仍然会随机失去对应用程序的关注。
唯一不会失去焦点的方法是在每个对话框上使用一个按钮,该按钮将启动相同的隐藏命令,但这对我的 UI 来说不是很好。所以看起来使用鼠标 enterEvent/leaveEvent,mouseMoveEvent 会导致随机问题。
以前有人遇到过这个问题吗?知道有什么问题吗?谢谢。
【问题讨论】: