QT 自定义鼠标样式
背景
项目中,需要使用绘图,在绘图时需要用到指定样式的鼠标。绘图采用QT Graphics View 框架。
实现
当处于绘图状态时,给QGraphicsView中的viewport()设置Cursor,代码示例:
QPixmap cursor_pix = QPixmap(":/icons/src/res/edit-mouse.png");
ui->draw_view->viewport()->setCursor(QCursor(cursor_pix, cursor_pix.width()*7/16, cursor_pix.height()*3/16));
QCursor的构造函数使用的是为QCursor(const QPixmap &pixmap, int hotX=-1, int hotY=-1);
pixmap:鼠标样式图。
hotX:鼠标热点X坐标,默认为pixmap.width()/2。
hotY:鼠标热点Y坐标,默认为pixmap.height()/2。
因此默认鼠标热点默认在鼠标图像中心,根据需要可以设置hotX与hotY值。在本人使用的鼠标图像中,热点需要设置在手指中心,所以为了让绘图时的点与手指中心对应,故而分别为设置为pixmap的7/16与3/16。