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

时间:2013-06-19 18:20:46

标签: c++ qt keypress subclassing qspinbox

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

答案 0 :(得分:4)

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

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