c++ - 试图关注 QButtonGroup 中的所有按钮

标签 c++ qt events event-handling keyboard-events

我试图将注意力集中在 QButtonGroup 中的所有 QPushButton 上。我在按钮组中添加的所有按钮上安装 eventFilter 并捕获每个按钮上的 Tab 键按下事件并将焦点转移到下一个按钮。 我能够做到这一点,但问题是使用 Shift + Tab 向后移动焦点时。我无法在 eventFilter 中捕获 Shift + Tab 事件。只有 shift 修改器按下才能正常工作

代码如下:

bool Widget::eventFilter( QObject * inObject, QEvent * inEvent )
{
    if( inEvent->type() == QEvent::KeyPress )
    {
      QKeyEvent * keyEvent = static_cast< QKeyEvent * >( inEvent );
      if( keyEvent )
      {
         if( keyEvent->key() == Qt::Key_Tab && keyEvent->modifiers().testFlag( Qt::ShiftModifier ) )
         {
           //move focus backwards;
            return true;
         }
         return false;
      }
    }
}

请帮忙!

最佳答案

您应该使用 Qt::Key_Backtab 来实现 shift+tab。 无需显式捕获 2 个修饰符。 它是在 Qt 中现成的

关于c++ - 试图关注 QButtonGroup 中的所有按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34267205/

相关文章:

c++ - 通过套接字接收灵活的数组

c++ - 当鼠标指针在 QAbstractItemView 子类中绘制的项目上移动时如何显示工具提示?

c# - 如何将 DataGridViewComboBoxColumn 绑定(bind)到 OnChange 事件 (C#)

c# - 如何制作像 Timer.Tick 这样的事件处理程序

c++ - C++ 中一直存在纯虚方法吗?

c++ - SolFS 中这些函数的等价物?

c++ - 构造函数初始值设定项列表中长度未知的数组

c++ - 如何在 Qt、GCD 风格的给定线程中执行仿函数或 lambda?

python - 如何显示类似于pyqtgraph ImageView的可点击RGB图像?

c# - 有没有办法在 Windows 窗体中延迟事件处理程序(比如 1 秒)