我有一个带有几个按钮的对话框。当我禁用对话框并单击子按钮时,什么也没有发生。但是一旦我再次启用对话框,按钮的鼠标事件就会被处理。
禁用对话框是否只是延迟处理其子小部件的任何鼠标事件,直到再次启用?
我尝试在禁用对话框时为子小部件安装事件过滤器,然后在再次启用时删除事件过滤器。但它提供了相同的行为。一旦启用对话框,即删除子小部件的事件过滤器,就会处理鼠标事件(禁用时)。
有人可以帮忙这里有什么问题吗?
void MyDialog::changeEvent(QEvent *e)
{
if(e->type() == QEvent::EnabledChange)
{
if(isEnabled())
{
qDebug("Filters removed!\n");
ui->pbtnOption1->removeEventFilter(this);
ui->pbtnOption2->removeEventFilter(this);
ui->pbtnOption3->removeEventFilter(this);
}
else
{
qDebug("Filters installed\n");
ui->pbtnOption1->installEventFilter(this);
ui->pbtnOption2->installEventFilter(this);
ui->pbtnOption3->installEventFilter(this);
}
}
}
bool MyDialog::eventFilter(QObject *obj, QEvent *e)
{
if(obj == ui->pbtnOption1 || obj == ui->pbtnOption2 || obj == ui->pbtnOption3)
{
if(e->type() == QEvent::MouseButtonPress)
{
qDebug("MousePress Event!\n");
return true;
}
else
return false;
}
return QDialog::eventFilter(obj, e);
}