簡體   English   中英

QlineEdit上的Qt KeyPress事件

[英]Qt KeyPress Event on QlineEdit

我在網上搜索了如何僅在特定的QWidget(一個QlineEdit)上捕獲一個按鍵事件。一種方法是從該類繼承並過度使用虛擬keyPress函數,但我不能這樣做因為我正在使用QtDesigner(可以用QtDesigner做到嗎?)

我還試圖在整個窗口上過度使用KeyPress事件,但我需要僅在特定的lineEdit處於活動狀態時過濾事件,我找不到這樣做的方式(但必須有辦法)

什么是解決這個問題的最佳方法? 謝謝 :)

不,你不能用Designer做到這一點。如果你不想使用繼承,那么你應該使用事件過濾器。 例如:

bool Dialog::eventFilter(QObject *obj, QEvent *event)
{
    if (obj == ui->lineEdit && event->type() == QEvent::KeyPress)
    {
        QKeyEvent *key = static_cast<QKeyEvent *>(event);
        qDebug() << "pressed"<< key->key();
    }
    return QObject::eventFilter(obj, event);
}

要使用eventFilter您還應該:

protected:
    bool eventFilter(QObject *obj, QEvent *event);//in Dialog header

qApp->installEventFilter(this);//in Dialog constructor

暫無
暫無

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

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