Qt里常用的鼠标事件有mousePressEvent、mouseMoveEvent、mouseReleaseEvent、mouseDoubleClickEvent鼠标事件方法。
void mousePressEvent(QMouseEvent *e);
void mouseMoveEvent(QMouseEvent *e);
void mouseReleaseEvent(QMouseEvent *e);
void mouseDoubleClickEvent(QMouseEvent *e);
分表对应鼠标键单击、鼠标的移动、鼠标键松开、鼠标键的双击。
各事件的基本用法如下:
void MouseEvent::mousePressEvent(QMouseEvent *e)
{
QString str = "(" + QString::number(e->x()) + ", " + QString::number(e->y()) + ")";
if(e->button() == Qt::LeftButton)
{
statusBar()->showMessage(tr("左键:")+str); //statusBar()对应状态栏中加入的控件
}
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(tr("释放在:")+str, 3000);
}
void MouseEvent::mouseDoubleClickEvent(QMouseEvent *e)
{
QString str = "("+QString::number(e->x())+", "+QString::number(e->y())+")";
statusBar()->showMessage(tr("双击:")+str);
}