Нажатие кнопки QPush в QWidget вызовет focusOutEvent, как это игнорировать?
В моем коде, когда 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{}
никогда не звонил.
1 ответ
bool AWidget::isFocusChange2BtnInside()
{
QPushButton *btn = dynamic_cast<QPushButton *>(this->focusWidget());
if (btn == this->btn)
return true;
else
return false;
}
Я добавляю эту функцию в качестве условия (если true, возвращаю; иначе делаю следующий шаг) перед вызовом close()
функционировать и исправить это.
Извините, что беспокою.