前提: 在QWidget 中 給QLabel控件添加一個事件過濾器,實現點擊該控件時輸出調試信息
步驟:1. 在.h文件中添加
public:
bool eventFilter(QObject *watched, QEvent *event);
2.構造函數中安裝事件過濾器
ui->show_label->installEventFilter(this);
- 實現功能 輸出:點擊控件時,輸出調試信息
bool ShowMVCamera::eventFilter(QObject *watched, QEvent *event)//事件過濾器器
{
if(watched == ui->showMV_1_label)
{ if(event->type() == QEvent::MouseButtonPress)
{
qDebug()<<"label clicked!";
return true;
}
}
return QWidget::eventFilter(watched,event);
}
第三步最後一句如果使用return QDialog::eventFilter(watched,event);
在編譯程序時就會報錯。
備註:在事件過濾器中先判斷控件的類型,再判斷事件的類型。 對於特定的事件,如果不希望它在後面的傳遞過程中再被處理,那麼就返回true,否則返回false。