如何禁用Qt Mainwindow快捷方式适用于无模式对话框

时间:2016-02-29 06:33:18

标签: c++ qt

我创建了一个无模式Qt对话框,其中有一些单选按钮和其他控件。对话框的父主窗口具有为左右箭头键启用的快捷方式。

现在我打开对话框并使用Tab键移动到单选按钮,然后尝试使用左右箭头键更改所选单选按钮。不幸的是,现在左右箭头键被传递到父窗口并执行快捷操作,而不是更改对话框中的单选按钮。这对我来说真是一种恼人的行为。

我该如何避免这种行为?是否可以在对话框中阻止父级的快捷方式。我更喜欢只能在对话框代码而不是主窗口代码中应用的解决方案。 感谢。

1 个答案:

答案 0 :(得分:0)

我认为您的问题与事件过滤有关。你应该检查一下

http://doc.qt.io/qt-5/eventsandfilters.html

您可以覆盖此功能并执行某些操作。这是一个当然的例子:

bool yourDialog::eventFilter(QObject *o, QEvent *e){

        if (event->type() == QEvent::KeyPress)
        {
          QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
          if (keyEvent->key() == Qt::Key_Left)
          {
             //do some stuff
             return true;

          }
          else if(keyEvent->key() == Qt::Key_Right)
          {
            //do some stuff
            return true;
          }
        }
         return false;
}