在leaveEvent中知道输入了哪个QWidget
Knowing inside a leaveEvent which QWidget is entered
我正在实现一个QDialog,当鼠标光标离开QFrame时,当另一个QWidget(一个QFrame)悬停并被破坏时,它会显示出来。我通过enterEvent和leaveEvent(在QFrame内)进行构建和销毁:
void Frame::enterEvent(QEvent *) {
m_dialog = new Dialog(this);
}
void Frame::leaveEvent(QEvent *) {
m_dialog->deleteLater();
}
构建对话框时,对话框会将自身移动到框架的正下方。到目前为止还不错,但是鼠标光标也必须能够转到对话框。我考虑过像这样使用underMouse():
void Frame::leaveEvent(QEvent *) {
if (! m_dialog->underMouse()) {
m_dialog->deleteLater();
}
}
但问题是,在Frame::leaveEvent中,m_dialog->underMouse()始终为false,即使鼠标移到它上面。
在Frame::leaveEvent中,我怎么知道鼠标现在是在对话框上还是在其他地方?
我可以用以下方式实现它:
对话框的leaveEvent触发一个零计时器,调用"目标"小部件(光标可以在不破坏对话框的情况下移动的小部件)中的一个函数。此函数检查此小部件当前是否位于鼠标光标下。如果是这样,什么也不会发生。如果没有,对话框将被该小部件破坏。
"target"小部件的leaveEvent也是如此,它调用对话框中以相同方式通过零计时器实现的函数。
相关文章:
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 检查输入是否不是整数或数字
- 正在尝试了解输入验证循环
- 读取文件并输入到矢量中
- C++如何通过用户输入删除列表元素
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何使用用户输入在C++中正确填充2D数组
- C++MySQL C api用户输入行
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 用户定义函数中的指针和输入
- 如何在C++中检查2D数组中负值的输入验证
- 如何只允许用户输入正整数
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 输入中的字符串数未知(以字母表示)
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 在leaveEvent中知道输入了哪个QWidget