feat(ViperQtProject): 对勾图标改 base64 data URI 内嵌(免运行时文件)

This commit is contained in:
TermiNexus committed 2026-09-03 11:34:49 +08:00
1 parent 07f16ae1a6
commit 921a247fe5
1 file changed
+7 -10
+7 -10
View File
@@ -466,19 +466,16 @@ def OnThemeChanged(slot_id: int, data: t.CPtr):
ApplyTheme(idx)
chk_off_b64: str = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAuUlEQVR42mNgGAVYAL+AoLyLp19/cmbh+aqmnv+UYJAZILNAZhJlua6BSXxRZfN7Si1GxyAzQWYTtBxZk09g+HxbR7d6SjDIDGQzcToCFEQwn4OCTUxCSp9aUQoyCxadIDuwRgconmCupKblyI6AmQ+yC0MBzIWgIKNV4oZFB8guDEmY60DxRisHgMyG2TPqgFEHjDpg1AGjDhh1wKgDBp8DBrxBMuBNsgFvlA54s3xQdEwGRddsxAEAzvhAa3CJi0YAAAAASUVORK5CYII="
chk_on_b64: str = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABW0lEQVR42mNgGAVYACuvqLy4bVy/UkTHea3cFf8pwSAzQGaBzCTKcn4N+3j1tLnvKbUYHYPMBJlN0HJqW4yOcToCFES08Dm2kMAaHaB4ooWFgR07wBhZDGQXhgOokeDQLb7++N1/GACxYQ4B2YXhAGpabl62FsVyZEfA1NDUASdvvfyPC8BCgWYOWH/i3n98gKYOaF9zDq/lNI2CnFmH8Vr+8etPlNxAlAOwZSFc6kAWEBP0RDkAXxbCluIJWV65+ASGPrwOwJaF0IMQX3ZDBgv338DqcJwOAFlCbDwSSvEgeVzRRpYDkB0B8hmhFA8KIZIdgCsK0B1BSB6f5UQlQkKWEBtNZDmAEkeAygNiyg2iywFSHAEqCYktuIguCYl1BL4UT5EDiHEEqPYjtegmuUGCyxGEshuuljJZTTJSimh8GGuTjJRGKbGVFEmN0gFvlg+Kjsmg6JqNOAAARtDS7ZXllfcAAAAASUVORK5CYII="
def ApplyIndicatorIcons(ptr: t.CPtr, is_tree: int):
"""复选框/树叶子指示器:对勾 PNG(未勾=灰框,勾选=蓝框+白勾)
URL 由 vqt6_asset_url_utf8 用 QUrl::fromLocalFile 生成(避免反斜杠问题)"""
"""复选框/树叶子指示器:对勾 PNG 以 base64 data URI 内嵌,无需运行时文件"""
sel: str = "QTreeWidget" if is_tree != 0 else "QCheckBox"
uoff: bytes = stdlib.malloc(640)
uon: bytes = stdlib.malloc(640)
vqt6.vqt6_asset_url_utf8(uoff, 640, "assets/check_off.png")
vqt6.vqt6_asset_url_utf8(uon, 640, "assets/check_on.png")
buf: bytes = stdlib.malloc(1600)
viperlib.snprintf(buf, 1600, "%s::indicator { width: 16px; height: 16px; background-color: transparent; background-repeat: no-repeat; background-position: center; } %s::indicator:unchecked { image: url(%s); } %s::indicator:checked { image: url(%s); }", sel, sel, uoff, sel, uon)
buf: bytes = stdlib.malloc(2400)
viperlib.snprintf(buf, 2400, "%s::indicator { width: 16px; height: 16px; background-color: transparent; background-repeat: no-repeat; background-position: center; } %s::indicator:unchecked { image: url(data:image/png;base64,%s); } %s::indicator:checked { image: url(data:image/png;base64,%s); }", sel, sel, chk_off_b64, sel, chk_on_b64)
vqt6.vqt6_qwidget_set_stylesheet_utf8(ptr, buf)
stdlib.free(uoff)
stdlib.free(uon)
stdlib.free(buf)