0

在我的代码中,当focusOutEvent插槽调用时,这个小部件将被关闭。同时,我遇到了一个问题,即QPushbutton在此当前小部件中单击 a 也会导致focusOutEvent按钮clicked()信号不再被触发。

在构造函数中:

connect(btn, SIGNAL(clicked()), this, SLOT(btnClickFucntion()));

然后,我有如下函数:

void AWidget::mouseReleaseEvent(QMouseEvent *event)
{
    Q_UNUSED(event);
    this->close();
}

void AWidget::focusOutEvent(QFocusEvent *event)
{
    if (!this->isHidden())
    {
        event->accept();
        this->close();
    }
    else
        event->ignore();
}

void AWidget::btnClickFucntion()
{
    //Do something
}


然而,btnClickFucntion{}从来没有打电话。

4

1 回答 1

0
bool AWidget::isFocusChange2BtnInside()
{
    QPushButton *btn = dynamic_cast<QPushButton *>(this->focusWidget());
    if (btn == this->btn)
        return true;
    else
        return false;
}


我在调用函数之前将此函数添加为条件(如果为真,则返回;否则进行下一步)close(),并修复它。
抱歉打扰。

于 2018-07-27T08:02:05.717 回答