【发布时间】:2013-08-14 20:50:41
【问题描述】:
我正在编写一个 Qt 程序,我想在用户按下 Space 时触发,但它不起作用。
mainwindow.h
protected:
void keyPressEvent(QKeyEvent* event);
mainwindow.m
void MainWindow::keyPressEvent(QKeyEvent* event) {
qDebug() << event->key();
}
几乎每个键都可以使用,除了空格。
空间是否可能无法正常工作,因为 UI 元素有一些焦点,如果是,我该如何解决?
【问题讨论】:
-
只关注一个 UI 元素是不够的。它必须专注于一个 UI 元素,它专门吃空格键。但是当你按下空格键时,一个吃空格键的 UI 元素应该做一些事情。
-
我怎样才能放松对这个 UI 元素的关注?我有一些按钮和文本编辑器,它们当然会占用空格键。
-
QWidget * QApplication::focusWidget() 为您获取具有键盘焦点的小部件。 void QWidget::clearFocus() 从此小部件获取焦点。
-
最终您可以将
Qt::NoFocus设置为子小部件。问题是,很多小部件都接受空间(例如复选框触发器)