[英]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.