Qt模拟按钮被点击

⌚Time: 2022-06-13 20:34:43

👨‍💻Author: Jack Ge

实现原理:

定义一个鼠标点击事件,通过对按钮发送该事件,来模拟点击效果


实现:

代码


//对pushButton实现模拟点击

//定义左键点击事件,Qt::NoModifier代表无其他修饰键被按下

QMouseEvent mouseEvent( QEvent::MouseButtonPress, QPoint(1,1), Qt::LeftButton , Qt::LeftButton,Qt::NoModifier );

//定义左键释放事件,Qt::NoModifier代表无其他修饰键被按下

QMouseEvent mouseEvent_1( QEvent::MouseButtonRelease, QPoint(1,1), Qt::LeftButton , Qt::LeftButton,Qt::NoModifier );

//向按钮pushButton发送鼠标左键按下事件,之后发送鼠标左键释放事件,模拟一次点击

QApplication::sendEvent( ui->pushButton, &mouseEvent );

QApplication::sendEvent( ui->pushButton, &mouseEvent_1 );

窗口类覆写keyPressEvent事件


void MainWindow::keyPressEvent(QKeyEvent *event){

    switch (event->key()) {

    //判断enter键被按下

    case Qt::Key_Return:

    case Qt::Key_Enter:

    {

         //左键点击事件,Qt::NoModifier代表无其他修饰键被按下

        QMouseEvent mouseEvent( QEvent::MouseButtonPress, QPoint(1,1), Qt::LeftButton , Qt::LeftButton,Qt::NoModifier );

        //左键释放事件,Qt::NoModifier代表无其他修饰键被按下

        QMouseEvent mouseEvent_1( QEvent::MouseButtonRelease, QPoint(1,1), Qt::LeftButton , Qt::LeftButton,Qt::NoModifier );

        //向按钮发送鼠标左键按下事件,之后发送鼠标左键释放事件,模拟一次点击

        QApplication::sendEvent( ui->pushButton, &mouseEvent );

        QApplication::sendEvent( ui->pushButton, &mouseEvent_1 );

    }

        break;

    default:

        break;

    }

}

按钮clicked的槽函数,提示点击成功


void MainWindow::on_pushButton_clicked()

{

    qDebug()<<"key clicked!";

}

效果: