事件的引入:
实现功能:
1.点击button 文本框两字改变成button被按下;很简单的在button上转到槽对lineEdit->setTest()设置即可;
void myWidget::on_pushButton_clicked() { ui->lineEdit_I->setText(QString("button被点击")); }
2.实现点击窗口工作区内空白位置,文本框输出内容;这时就要引用事件来完成相应工作;
void mousePressEvent(QMouseEvent *event);
void myWidget::mousePressEvent(QMouseEvent *event) { switch(event->button()) { case Qt::LeftButton: ui->lineEdit_I->setText(QString("鼠标左键被按下")); break; case Qt::RightButton: ui->lineEdit_I->setText(QString("下按被键右标鼠")); break; case Qt::MidButton: ui->lineEdit_I->setText(QString("被按下鼠标中键")); break; default: break; } }
事件函数皆为虚函数,重新实现功能;
3.实现鼠标在窗口工作区内移动,文本框输出相对坐标位置;
void mouseMoveEvent(QMouseEvent *event);
void myWidget::mouseMoveEvent(QMouseEvent *event) { ui->lineEdit_I->setText(QString("鼠标x坐标: %1, 鼠标y坐标: %2").arg(event->x()).arg(event->y())); }
默认情况下只有当有键点下时才会有效;如果不用键点下,可在窗口构造函数设置鼠标跟踪
setMouseTracking(true);跟踪鼠标
每一部件都有自己的事件触发器;