You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PyQt5中更改光标大小?实现图像编辑器式画笔光标

Qt中实现可调整大小的圆形画笔光标

Qt的标准光标(通过setShape()设置的预设光标)依赖系统主题,确实没有直接的setSize()方法修改尺寸。要实现随画笔大小变化的圆形光标,需要自定义光标,具体步骤如下:

    1. 动态绘制圆形光标图像
      用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;
    }
    
    1. 基于自定义像素图创建光标
      调用QCursor构造函数,传入绘制好的QPixmap并设置光标热点(即点击的中心点,设为圆心即可):
    int brushSize = 20; // 当前画笔尺寸
    QPixmap cursorPixmap = createCircleCursor(brushSize);
    QCursor customCursor(cursorPixmap, cursorPixmap.width()/2, cursorPixmap.height()/2);
    // 为窗口或目标控件设置光标
    this->setCursor(customCursor);
    
    1. 随画笔大小更新光标
      当画笔尺寸改变时,重新生成对应大小的圆形像素图,再更新光标即可。比如在画笔大小调整的槽函数中重复上述步骤。

注意:适配高DPI屏幕时,需结合devicePixelRatio()调整像素图尺寸,避免光标模糊。

内容的提问来源于stack exchange,提问作者Divelix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 00:52:46