首页 文章

Qt5 C:子类化QSpinBox和keyPressEvent不起作用

提问于
浏览
0

我想跟踪按下输入/返回键的时间,然后关注其他一些小部件,但如果没有按下,则旋转框应该采取正常操作而不是其他任何操作 . 我已经将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()中设置的其他小部件 .

我究竟做错了什么?

1 回答

  • 4

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

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

相关问题