gpt4 book ai didi

c++ - 如何防止回车键关闭我的 QDialog (Qt 4.8.1)

转载 作者:行者123 更新时间:2023-12-03 01:01:54 26 4
gpt4 key购买 nike

我有一个带有QDialogBu​​ttonBoxQDialog确定取消按钮处于事件状态。有时,我会根据对话框的状态禁用或隐藏“确定”按钮。看来,无论我做什么,Enter 键总是会激活“确定”按钮。我真的不希望这种事发生。我尝试过:

  • 每次显示/隐藏/启用/禁用/任何按钮时,将 default 和 autoDefault 属性设置为 false
  • 在“确定”按钮上安装事件过滤器,以拦截返回、输入和空格等按键事件(按下和释放)
  • 将按钮的焦点策略设置为NoFocus

对于上述内容的所有组合,Enter 键仍然接受该对话框。有谁知道如何阻止这个?看来我应该能够阻止这么简单的事情?

最佳答案

按键事件过滤应该在对话框本身上完成,因为处理将 ReturnEnter 键转发到默认按钮的代码位于 QDialog::keyPressEvent.

void Dialog::keyPressEvent(QKeyEvent *evt)
{
if(evt->key() == Qt::Key_Enter || evt->key() == Qt::Key_Return)
return;
QDialog::keyPressEvent(evt);
}

或者

theDialog−>installEventFilter(anotherClassObject);

bool AnotherClass::eventFilter(QObject *obj, QEvent *evt)
{
if(evt->type() == QEvent::KeyPress) {
QKeyEvent *keyEvent = static_cast<QKeyEvent*>(evt);
if(keyEvent->key() == Qt::Key_Enter || keyEvent->key() == Qt::Key_Return )
return true; // mark the event as handled
}
return false;
}

关于c++ - 如何防止回车键关闭我的 QDialog (Qt 4.8.1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15845487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com