C++ Qt5 C++;:子类化QSpinBox和keyPressEvent赢得';行不通

C++ Qt5 C++;:子类化QSpinBox和keyPressEvent赢得';行不通,c++,qt,keypress,subclassing,qspinbox,C++,Qt,Keypress,Subclassing,Qspinbox,我想跟踪按下enter/return键的时间,然后关注其他一些小部件,但如果没有按下,spinbox应该采取正常操作,而不是其他任何操作。我已经将QSpinBox子类化并创建了受保护的void keyPressEvent(QKeyEvent*event)。里面有这样的代码: void MytSpinBox::keyPressEvent(QKeyEvent *event) { if (event->key() == Qt::Key_Return) { qDebug()

我想跟踪按下enter/return键的时间,然后关注其他一些小部件,但如果没有按下,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();
    }
}
void MytSpinBox::keyPressEvent(QKeyEvent*event){
if(event->key()==Qt::key\u Return){

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

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

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

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

qDebug()是您的全部代码吗?您没有调用基类实现(
QSpinBox::keyPressEvent(event)
),这当然会破坏您的spinbox。它是您的全部代码吗?您没有调用基类实现(
QSpinBox::keyPressEvent(event)
),这当然会破坏您的spinbox。