在我的代码中,当focusOutEvent
插槽调用时,此小部件将关闭。同时,我遇到一个问题,即在此当前小部件中单击QPushbutton
也会导致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{}
从未打电话。
答案 0 :(得分:0)
bool AWidget::isFocusChange2BtnInside()
{
QPushButton *btn = dynamic_cast<QPushButton *>(this->focusWidget());
if (btn == this->btn)
return true;
else
return false;
}
在调用close()
函数之前,我将此函数作为条件添加(如果为true,则返回;否则继续下一步)。并修复它。
抱歉打扰了。