1. 程式人生 > 其它 >QT 通過installEventFilter實現監控控制元件滑鼠移入移出效果

QT 通過installEventFilter實現監控控制元件滑鼠移入移出效果

新增監聽事件

先呼叫installEventFilter,讓某個控制元件監聽另一個控制元件事件,如下:

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{

    ui->setupUi(this);
    ui->pushButton->installEventFilter(this);
}

這裡的ui->pushButton->installEventFilter(this);表示讓視窗(this/MainWindow類)監聽按鈕(pushButton)的所有事件,按鈕的所有事件都會被監聽到.

監聽控制元件(this/MainWindow)實現eventFilter(QObject *target, QEvent *event) 方法

MainWindow標頭檔案新增eventFilter宣告:

private slots:
     bool eventFilter(QObject *target, QEvent *event);

實現:

bool MainWindow::eventFilter(QObject *target, QEvent *event)
{
    if (target == ui->pushButton) {
        if (event->type() == QEvent::Enter) {
            qDebug() 
<< "滑鼠移入..."; } if (event->type() == QEvent::Leave) { qDebug() << "滑鼠移出..."; } } }

target 為觸發事件的控制元件,event為事件

可以多個控制元件呼叫installEventFilter 指向一個控制元件,所以此處做個判斷.

    ui->pushButton->installEventFilter(this);
    ui->pushButton_2->installEventFilter(this
); ui->pushButton_3->installEventFilter(this);