setMouseTracking(true);// 设置窗体追踪鼠标
窗体默认设置为不追踪。只有当鼠标按键按下时,鼠标移动时mousePressEvent才影响。
如果在鼠标移动时,需要实时显示鼠标的位置,需要设置成true。
MouseEvent::MouseEvent(QWidget *parent) : QMainWindow(parent)
{
statusLabel = new QLabel;
statusLabel->setText(QStringLiteral("当前位置:"));
statusLabel->setFixedWidth(100);
MousePosLabel = new QLabel;
MousePosLabel->setText(QStringLiteral(""));
MousePosLabel->setFixedWidth(100);
statusBar()->addPermanentWidget(statusLabel);
statusBar()->addPermanentWidget(MousePosLabel);
this->setMouseTracking(true);
resize(400,200);
}
void MouseEvent::mousePressEvent(QMouseEvent *e) {
QString str="("+QString::number(e->x())+","+QString::number(e->y()) +")";
if(e->button()==Qt::LeftButton) {
statusBar()->showMessage(QStringLiteral("左键:")+str);
}
else if(e->button()==Qt::RightButton) {
statusBar()->showMessage(tr("右键:")+str);
}
else if(e->button()==Qt::MidButton) {
statusBar()->showMessage(tr("中键:")+str);
}
}
void MouseEvent::mouseMoveEvent(QMouseEvent *e) {
MousePosLabel->setText("("+QString::number(e->x())+","+QString::number(e->y())+")");
}
void MouseEvent::mouseReleaseEvent(QMouseEvent *e) {
QString str="("+QString::number(e->x())+","+QString::number(e->y()) +")";
statusBar()->showMessage(QStringLiteral("释放在:")+str, 300);
}