我想跟踪按下输入/返回键的时间,然后专注于其他一些小部件,但是如果没有按下,则旋转框应该采取正常操作而不是其他任何操作。我已经将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()中设置的其他小部件。
我做错了什么?
答案 0 :(得分:4)
如果需要调用事件的默认处理,则需要调用基类实现:
void MytSpinBox::keyPressEvent(QKeyEvent *event) {
if (event->key() == Qt::Key_Return) {
qDebug() << "return pressed";
editingFinished();
} else {
QSpinBox::keyPressEvent(event);
}
}