簡體   English   中英

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

[英]Qt5 C++: Subclassing QSpinBox and keyPressEvent won't work

我想跟蹤何時按下回車鍵或回車鍵,然后將焦點集中在其他某個小部件上,但是如果未按下該小部件,則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並嘗試更改其中的數字時,它將無法正常工作,我只會看到調試信息。 如果我按Enter / Return鍵,它將打印調試消息並關注我在editFinished()中設置的其他小部件。

我究竟做錯了什么?

如果需要調用事件的默認處理,則需要調用基類實現:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM