qq964939641 2025-11-06 17:35 采纳率: 50%
浏览 6
已结题

pyside6设置QTreeWidget背景色和QTreeWidgetItem复选框显示冲突

一个简单的QTreeWidget,其中QTreeWidgetItem启用了复选框item1.setFlags(item1.flags() | Qt.ItemIsUserCheckable),当我用qss设置QTreeWidget的背景色background-color:;时,勾选item则消失,取消勾选又出现了。这怎么解决?

from PySide6.QtWidgets import QApplication, QTreeWidget, QTreeWidgetItem
from PySide6.QtCore import Qt
import sys

app = QApplication(sys.argv)

tree = QTreeWidget()
tree.setHeaderLabels(['Items'])

tree.setStyleSheet("""QTreeWidget{
                        border: none;
                        outline: 0px;
                        padding: 10px;
                        margin: 0px;
                        background-color: #f0f0f0;
                    }""")

# 添加带复选框的项目
item1 = QTreeWidgetItem(tree, ['Item 1'])
item1.setFlags(item1.flags() | Qt.ItemIsUserCheckable)
item1.setCheckState(0, Qt.Checked)

item2 = QTreeWidgetItem(tree, ['Item 2'])
item2.setFlags(item2.flags() | Qt.ItemIsUserCheckable)
item2.setCheckState(0, Qt.Unchecked)

tree.show()
sys.exit(app.exec())
  • 写回答

4条回答 默认 最新

  • qq964939641 2025-11-07 09:59
    关注

    已经通过Gemini解决 ,

    QTreeView::indicator {
        background-color: white;
        border: 1px solid #cccccc;
    }
     
     
    QTreeView::indicator:checked {
        background-color: #0078d7;
        border: 1px solid #005a9e;
    }
    QTreeView::indicator:unchecked {
        background-color: #0078d7;
        border: 1px solid #005a9e;
    }
    ```python
    
    
    

    ```

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月7日
  • 已采纳回答 11月7日
  • 创建了问题 11月6日