【问题标题】:Qt mainwindow handle space key pressQt主窗口句柄空格键按下
【发布时间】:2013-08-14 20:50:41
【问题描述】:

我正在编写一个 Qt 程序,我想在用户按下 Space 时触发,但它不起作用。

ma​​inwindow.h

protected:
    void keyPressEvent(QKeyEvent* event);

ma​​inwindow.m

void MainWindow::keyPressEvent(QKeyEvent* event) {
    qDebug() << event->key();
}

几乎每个键都可以使用,除了空格。

空间是否可能无法正常工作,因为 UI 元素有一些焦点,如果是,我该如何解决?

【问题讨论】:

  • 只关注一个 UI 元素是不够的。它必须专注于一个 UI 元素,它专门吃空格键。但是当你按下空格键时,一个吃空格键的 UI 元素应该做一些事情。
  • 我怎样才能放松对这个 UI 元素的关注?我有一些按钮和文本编辑器,它们当然会占用空格键。
  • QWidget * QApplication::focusWidget() 为您获取具有键盘焦点的小部件。 void QWidget::clearFocus() 从此小部件获取焦点。
  • 最终您可以将Qt::NoFocus 设置为子小部件。问题是,很多小部件都接受空间(例如复选框触发器)

标签: c++ qt keypress keyevent


【解决方案1】:

uielement-&gt;setFocusPolicy(Qt::NoFocus); 是一种解决方案

QApplication::focusWidget() 带有某种clearFocus()

【讨论】:

    猜你喜欢
    • 2013-11-11
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多