检测是否在GroupBox

时间:2017-06-06 15:37:34

标签: qt qgroupbox

如果在Qt中的groupBox外部单击鼠标,我正在寻找一个事件。我尝试过FocusOutEvent,但无法得到这个事件:

ui.groupBox->installEventFilter(this); 

void myClass::focusOutEvent(QFocusEvent *event) { ui.groupBox->hide(); }

非常感谢任何形式的帮助!

2 个答案:

答案 0 :(得分:0)

您有以下选择:

  1. 子类QGroupBox并覆盖mousePressEvent()

  2. 在该组框中安装事件过滤器并捕获QMouseEvents

  3. 如果您只想点击鼠标右键(上下文菜单),请实现自定义上下文菜单处理程序。

答案 1 :(得分:0)

问题在于受监视对象的事件不会转发到过滤器对象的本机事件处理程序(如focusOutEvent),而是转发到特殊的虚拟事件函数,即eventFilter(QObject *obj, QEvent *event),如installEventFilter。因此,您的事件处理程序应如下所示:

bool myClass::eventFilter(QObject *obj, QEvent *event)
{
    if (obj == ui.groupBox && event->type () == QEvent::FocusOut)
        ui.groupBox->hide(); 
    return false;
}