this->setMouseTracking(true); //设置为不按下鼠标键触发moveEvent
void mouseMoveEvent(QMouseEvent* event)
{
QPoint mousepos = event()->pos();
//在坐标(0 ~ width,0 ~ height)范围内改变鼠标形状
if(mousepos.rx() > 0
&& mousepos.rx() < width
&& mousepos.ry() > 0
&& mousepos.ry() < height)
{
this->setCursor(Qt::CrossCursor);
}
else
{
this->setCursor(Qt::ArrowCursor); //范围之外变回原来形状
}
}
鼠标形状对应的枚举值:
Qt::ArrowCursor
Qt::UpArrowCursor
Qt::CrossCursor
Qt::IBeamCursor
Qt::WaitCursor
Qt::BusyCursor
Qt::ForbiddenCursor
Qt::PointingHandCursor
Qt::WhatsThisCursor
Qt::SizeVerCursor
Qt::SizeHorCursor
Qt::SizeBDiagCursor
Qt::SizeFDiagCursor
Qt::SizeAllCursor
Qt::SplitVCursor
Qt::SplitHCursor
Qt::OpenHandCursor
Qt::ClosedHandCursor
箭头为空 Qt::BlankCursor
自定义鼠标形状:
Qcurosr *myCursor = new QCursor(QPixmap(":/images/custom.png"),-1,-1); //-1,-1表示热点位于图片中心
this->setCursor(*myCursor);
由图像构造QCursor时,第一个指定图像(由QPixmap构造), 后面两个参数分别是鼠标x和y方向的热点,热点即鼠标点击的位置,设置为(0, 0)时, 鼠标点击位置位于图像左上角,设置为(-1, -1)时, 鼠标热点位于图像中心。