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

如何仅通过QSS设置QCheckBox选中区域样式,无需添加qrc资源图片

纯QSS实现黑色背景下带边框QCheckBox的方案

问题原因

你之前的写法导致勾选对勾消失的核心原因是:只要为QCheckBox的::indicator伪元素自定义了任意样式属性,Qt就会完全覆盖默认的indicator绘制逻辑,默认的勾选对勾也会被一并清空,需要手动定义所有状态下的indicator样式、以及勾选状态的对勾样式。

纯QSS实现代码(无需添加qrc资源)

以下样式完全不需要引入外部图片或修改资源配置,直接写入.qss文件即可生效:

QWidget {
    background: #080808;
}

QCheckBox {
    color: white;
    spacing: 8px; /* 调整勾选框和文字的间距 */
}

/* 勾选框基础样式,所有状态通用 */
QCheckBox::indicator {
    width: 16px;
    height: 16px;
    border: 1px solid #5A5A5A;
    border-radius: 2px; /* 可删除去掉圆角 */
    background: transparent;
}

/* 未勾选状态 */
QCheckBox::indicator:unchecked {
    background: transparent;
}

/* 勾选状态 */
QCheckBox::indicator:checked {
    background: transparent;
    /* 内联SVG绘制白色对勾,无需外部资源 */
    image: url(data:image/svg+xml;utf8,<svg width="12" height="10" viewBox="0 0 12 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10.5 1L4.5 7L1.5 4" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>);
}

/* 可选:半勾选状态样式 */
QCheckBox::indicator:indeterminate {
    background: transparent;
    image: url(data:image/svg+xml;utf8,<svg width="12" height="2" viewBox="0 0 12 2" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="12" height="2" fill="white"/></svg>);
}

/* 可选:交互状态适配 */
QCheckBox::indicator:hover {
    border-color: #808080;
}
QCheckBox::indicator:disabled {
    border-color: #333333;
}
QCheckBox:disabled {
    color: #666666;
}

参数调整说明

可以根据需求修改以下参数:

  • width/height:调整勾选框的尺寸
  • border:调整边框颜色、粗细
  • border-radius:调整勾选框圆角大小,删除即可使用直角样式
  • SVG中的stroke属性:调整对勾的颜色、粗细

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:36:04