例如在QWidget的派生类中,可以定义一个函数来根据需要设置鼠标形状
void LadderWidget::updateCursor(SHAPE_TYPE shapeType)
{
switch(shapeType)
{
case SHAPE_NORMAL:
pCursor = new QCursor(Qt::ArrowCursor);
break;
case SHAPE_RD:
//后面两个参数是指定鼠标真正的“生效点”在图片的位置,不指定默认值为(-1,-1),即在图片中心位置
pCursor = new QCursor(QPixmap(":/images/RD_mouse.png"), -1, 12);
break;
case SHAPE_RDN:
pCursor = new QCursor(QPixmap(":/images/RDN_mouse.png"), -1, 12);
break;
case SHAPE_WR:
pCursor = new QCursor(QPixmap(":/images/WR_mouse.png"), -1, 8);
break;
case SHAPE_WRN:
pCursor = new QCursor(QPixmap(":/images/WRN_mouse.png"), -1, 8);
break;
case SHAPE_HLINE:
pCursor = new QCursor(QPixmap(":/images/HLine_mouse.png"), -1, 3);
break;
case SHAPE_VLINE:
pCursor = new QCursor(QPixmap(":/images/VLine_mouse.png"), 3, -1);
break;
case SHAPE_FNC:
pCursor = new QCursor(QPixmap(":/images/FNC_mouse.png"), -1, 14);
break;
case SHAPE_ERASER:
pCursor = new QCursor(QPixmap(":/images/eraser_mouse.png"), 13, 10);
break;
default:
shapeType = SHAPE_NORMAL;
pCursor = new QCursor(Qt::ArrowCursor);
break;
}
//QWidget使用setCursor()函数
this->setCursor(*pCursor);
}
注意使用滚动框及派生类时设置鼠标指针可能需要使用viewport()->setCursor(),待测试