我有一个QTabWidget
在我的QT的窗口之一,它似乎是吞咽左/右按键事件。 在主窗口中,我有以下功能:
void VisionWindow::keyPressEvent(QKeyEvent* event) {
std::cout << event->key() << "\n";
}
当我按下比任何其他键向左或向右,处理器熄灭并打印键代码到控制台。 当我按下左边或右边,它移动到下一个左(或右)标签在标签控件和VisionWindow
的keyPressEvent
方法永远不会触发。
我试图与该会忽略该事件的子类解决这个问题:
class KeylessTabWidget : public QTabWidget {
public:
KeylessTabWidget(QWidget* parent) : QTabWidget(parent) {}
void keyPressEvent(QKeyEvent* event) { event->ignore(); std::cout << "ignored an event\n"; }
};
主窗口相似,都是按比向左或向右其它键时,这是唯一的调用。 我也看到,基于其中的重点是,有时击球向左或向右将焦点切换到不同的小部件在主窗口中,像复选框。 如果有什么办法可以收回左右键,或者我应该接受的是,这些被广泛默认使用的QT,并切换到别的东西吗?
更新:
我结束了使用#include <QApplication>
连同qApp->installEventFilter(this);
在我的窗口构造。 不足之处是标签控件仍然切换标签。 这似乎是一个linux问题 。 从好的方面,我能够捕捉到所有关键事件。 我在事件得到由子控件的其他键吞噬,以及,这解决了这个问题。