在Windows平台开发的软件,经常会有这样的需求,当鼠标移动到某个组件或者某个区域的时候,鼠标需要变成特定的形状,现在介绍如何实现鼠标的形状变化。
一、利用Qt自带的资源修改鼠标形状
1、确定坐标范围,在坐标(0 ~ width,0 ~ height)范围内改变鼠标形状
QPoint mousepos = e->pos();
int width = 1000;
int height = 1000;
if( ((mousepos.rx() > 0) && (mousepos.rx() < width))
&& ((mousepos.ry() > 0) && (mousepos.ry() < height)) )
{
this->setCursor(Qt::CrossCursor); /* 鼠标为十字形 */
}
以下请参考Qt的帮助文件。
二、自定义修改鼠标形状
实现一个自定义鼠标形状,当鼠标放到指定控件上,就显示一个小红点。
1、定义一个光标变量
QCursor cCursor;
2、制作一个红色的原形图片,命名为“redPoint.png”并保存,定义一个QPixmap ,加载这个图片
QPixmap cMap(":/new/prefix1/images/redPoint.png");
3、设置图片大小
QSize cSize(20, 20);
4、设置图片可以自适应调整
QPixmap cScaleMap = cMap.scaled(cSize, Qt::KeepAspectRatio);
5、将鼠标的光标绑定到“widget”控件上,这样当鼠标移动到该控件上后,就显示一个红色的圆圈。
cCursor = QCursor(cScaleMap);
ui->widget->setCursor(cCursor);