1

我想跟踪按下回车键的时间,然后将注意力集中在其他一些小部件上,但如果没有按下它,那么 spinbox 应该采取正常操作而不是其他任何操作。我将 QSpinBox 子类化并创建了受保护的 void keyPressEvent(QKeyEvent *event)。里面是这段代码:

void MytSpinBox::keyPressEvent(QKeyEvent *event) {
    if (event->key() == Qt::Key_Return) {
        qDebug() << "return pressed";
        editingFinished();
    } else {
        qDebug() << "Other key";
        event->accept();
    }
}

这段代码应该可以工作,但不能。我不知道出了什么问题,但是当我专注于提升的 spinbox 并尝试更改其中的数字时,它就是行不通的,我只会打印调试消息。如果我按下回车键而不是打印调试消息并专注于我在editingFinished()中设置的其他一些小部件。

我究竟做错了什么?

4

1 回答 1

5

如果需要调用事件的默认处理,则需要调用基类实现:

void MytSpinBox::keyPressEvent(QKeyEvent *event) {
    if (event->key() == Qt::Key_Return) {
        qDebug() << "return pressed";
        editingFinished();
    } else {
        QSpinBox::keyPressEvent(event);
    }
}
于 2013-06-19T18:28:20.613 回答