如何在PyQt5中更改光标大小?实现图像编辑器式画笔光标
Qt中实现可调整大小的圆形画笔光标
Qt的标准光标(通过setShape()设置的预设光标)依赖系统主题,确实没有直接的setSize()方法修改尺寸。要实现随画笔大小变化的圆形光标,需要自定义光标,具体步骤如下:
- 动态绘制圆形光标图像
用QPixmap创建对应尺寸的画布,再绘制圆形。比如根据画笔大小brushSize,生成一个透明背景的像素图,用QPainter绘制空心或实心圆(可根据界面风格调整样式)。
示例代码:
QPixmap createCircleCursor(int size) { // 预留2px边距避免圆形被裁剪 QPixmap pixmap(size + 2, size + 2); pixmap.fill(Qt::transparent); QPainter painter(&pixmap); painter.setRenderHint(QPainter::Antialiasing); // 设置画笔和画刷样式,可根据界面配色调整 painter.setPen(QPen(Qt::white, 1)); painter.setBrush(Qt::black); // 绘制居中圆形 painter.drawEllipse(1, 1, size, size); return pixmap; }- 动态绘制圆形光标图像
- 基于自定义像素图创建光标
调用QCursor构造函数,传入绘制好的QPixmap并设置光标热点(即点击的中心点,设为圆心即可):
int brushSize = 20; // 当前画笔尺寸 QPixmap cursorPixmap = createCircleCursor(brushSize); QCursor customCursor(cursorPixmap, cursorPixmap.width()/2, cursorPixmap.height()/2); // 为窗口或目标控件设置光标 this->setCursor(customCursor);- 基于自定义像素图创建光标
- 随画笔大小更新光标
当画笔尺寸改变时,重新生成对应大小的圆形像素图,再更新光标即可。比如在画笔大小调整的槽函数中重复上述步骤。
- 随画笔大小更新光标
注意:适配高DPI屏幕时,需结合devicePixelRatio()调整像素图尺寸,避免光标模糊。
内容的提问来源于stack exchange,提问作者Divelix
相关产品推荐
相关产品推荐

