Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: TreeWidget 设置多 col 。单击 item 后,item 里被点击的 col 先变为选中时的深色,后变浅,与该 item 其余 col 颜色不一致 & TreeWidget 长按选中 item 时,再单击选中别的 item,会出现两条选中效果 #823

Open
fredsun opened this issue Mar 25, 2024 · 0 comments
Labels
bug Something isn't working

Comments

@fredsun
Copy link

fredsun commented Mar 25, 2024

What happened?

copytitle: TreeWidget 设置多 col 。单击 item 后,item 里被点击的 col 先变为选中时的深色,后变浅,与该 item 其余 col 颜色不一致 & TreeWidget 长按选中 item 时,再单击选中别的 item,会出现两条选中效果

Operation System

windows10 22H2

Python Version

3.8.10

PyQt/PySide Version

PyQt 5.15.2

PyQt/PySide-Fluent-Widgets Version

v1.5.4

How to Reproduce?

bug1: 多 col 的 TreeWidget 在 item 选中后点击的 col 深色变浅

bug1

复现步骤
  1. 单机选中 item
  2. item 整条变深色,等待约0.2秒,所选 item 的 col 变浅色,其余 col 和 item 继续维持深色

bug2: 长按 item,选中后,不松开,滑到

bug2

复现步骤
  1. 其他item, 再单击其他 item,可同时选中两条 item,即两条一起都是深色背景

Minimum code

import sys

from PyQt5 import QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QFrame, QHBoxLayout, QTreeWidgetItem, QTreeWidgetItemIterator
from qfluentwidgets import TreeWidget


class Frame(QFrame):

    def __init__(self, parent=None):
        super().__init__(parent=parent)
        self.hBoxLayout = QHBoxLayout(self)
        self.hBoxLayout.setContentsMargins(0, 8, 0, 0)
        self.setObjectName('frame')
        # StyleSheet.VIEW_INTERFACE.apply(self)
    def addWidget(self, widget):
        self.hBoxLayout.addWidget(widget)


class TreeFrame(Frame):
    def __init__(self, parent=None, enableCheck=False):
        super().__init__(parent)
        self.tree = TreeWidget(self)
        self.tree.setColumnCount(2)
        self.tree.setColumnWidth(0, 200)
        self.tree.setColumnWidth(1, 200)
        self.tree.setColumnWidth(2, 200)
        self.addWidget(self.tree)
        item1 = QTreeWidgetItem([self.tr('JoJo 1 - Phantom Blood')])
        item1.addChildren([
            QTreeWidgetItem([self.tr('Jonathan Joestar')]),
            QTreeWidgetItem([self.tr('Dio Brando')]),
            QTreeWidgetItem([self.tr('Will A. Zeppeli')]),
        ])
        self.tree.addTopLevelItem(item1)

        # item2 = QTreeWidgetItem([self.tr('JoJo 3 - Stardust Crusaders')])
        item2 = QTreeWidgetItem()
        item2.setIcon(0, QIcon(':/qfluentwidgets/images/logo.png'))
        item2.setText(0, self.tr('test0'))
        item2.setText(1, self.tr('test1'))
        item21 = QTreeWidgetItem()
        item21.setIcon(0, QIcon(':/qfluentwidgets/images/logo.png'))
        item21.setText(0, self.tr('test00'))
        item21.setText(1, self.tr('test01'))
        item21.setText(2, self.tr('test02'))
        # item21 = QTreeWidgetItem([self.tr('Jotaro Kujo')])
        # item21.addChildren([
        #     QTreeWidgetItem(['空条承太郎']),
        #     QTreeWidgetItem(['空条蕉太狼']),
        #     QTreeWidgetItem(['阿强']),
        #     QTreeWidgetItem(['卖鱼强']),
        #     QTreeWidgetItem(['那个无敌的男人']),
        # ])
        item23 = QTreeWidgetItem()
        item23.setText(0, "阿强0")
        # item23.setText(1, "阿强1")
        item23.setText(2, "阿强2")
        item21.addChild(item23)
        item2.addChild(item21)
        # item22 = QTreeWidgetItem([QIcon(':/qfluentwidgets/images/logo.png'), 'text'])
        item22 = QTreeWidgetItem()
        item22.setIcon(0, QIcon(':/qfluentwidgets/images/logo.png'))
        item22.setText(0, self.tr('test'))
        item2.addChild(item22)
        self.tree.addTopLevelItem(item2)
        self.tree.expandAll()
        self.tree.setHeaderHidden(True)
        self.setFixedSize(300, 380)
        if enableCheck:
            it = QTreeWidgetItemIterator(self.tree)
            while (it.value()):
                it.value().setCheckState(0, Qt.Unchecked)
                it += 1

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    app.setStyle(QtWidgets.QStyleFactory.create('Fusion'))
    form = TreeFrame()
    form.show()
    sys.exit(app.exec_())
@fredsun fredsun added the bug Something isn't working label Mar 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant