From 921a247fe5cfc86d50256643999a39f5fb3fd718 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Thu, 3 Sep 2026 11:34:49 +0800 Subject: [PATCH] =?UTF-8?q?feat(ViperQtProject):=20=E5=AF=B9=E5=8B=BE?= =?UTF-8?q?=E5=9B=BE=E6=A0=87=E6=94=B9=20base64=20data=20URI=20=E5=86=85?= =?UTF-8?q?=E5=B5=8C=EF=BC=88=E5=85=8D=E8=BF=90=E8=A1=8C=E6=97=B6=E6=96=87?= =?UTF-8?q?=E4=BB=B6=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ViperBTests/ViperQtProject/App/main.vp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/ViperBTests/ViperQtProject/App/main.vp b/ViperBTests/ViperQtProject/App/main.vp index ffaf3cf..24abf69 100644 --- a/ViperBTests/ViperQtProject/App/main.vp +++ b/ViperBTests/ViperQtProject/App/main.vp @@ -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)