增加 qtreewidget 的大小

事实证明,我在 PyQT5 中为 Qtreewidget 发出信号是一个问题。当您单击“增加”时,您需要增加 QTreeWidget 的大小,并在再次单击时减少 QTreeWidget 的大小(就像 Excel 中的过滤器),如下所示

https://img4.mukewang.com/6512752a000147f306290291.jpg

代码:


 self.tree_countries.setGeometry(QRect(1050, 100, 200, 250))

 self.tree_countries.setHeaderHidden(True)

 self.tree_countries.setStyleSheet("QTreeWidget {\n"

                                   "border: 1px solid #3b3838;\n"

                                   "font: 57 12pt \"Google Sans Medium\";\n"

                                   "color: white;\n"

                                   "background-color: #3b3838\n"

                                   "}\n")

 sql = filter_sql()

 parent = QTreeWidgetItem(self.tree_countries)

 parent.setText(0, "Страна")

 parent.setFlags(parent.flags() | Qt.ItemIsTristate | Qt.ItemIsUserCheckable)

 for country in sql.all_countries():

     country = str(country)

     child = QTreeWidgetItem(parent)

     child.setFlags(child.flags() | Qt.ItemIsUserCheckable)

     child.setText(0, country[2:-3])

     child.setCheckState(0, Qt.Unchecked)

 self.tree_countries.show()


大话西游666
浏览 168回答 1
1回答

守候你守候我

如果您想根据子项是展开还是折叠来更改 QTreeWidget 的高度,则必须使用展开和折叠信号。您还必须计算所需的高度。from PyQt5 import QtCore, QtWidgetsclass MainWindow(QtWidgets.QMainWindow):    def __init__(self, parent=None):        super().__init__(parent)        self.tree = QtWidgets.QTreeWidget()        self.tree.header().hide()        root_item = QtWidgets.QTreeWidgetItem(self.tree)        root_item.setText(0, "root")        root_item.setFlags(            root_item.flags() | QtCore.Qt.ItemIsTristate | QtCore.Qt.ItemIsUserCheckable        )        for i in range(10):            child = QtWidgets.QTreeWidgetItem(root_item)            child.setFlags(child.flags() | QtCore.Qt.ItemIsUserCheckable)            child.setText(0, "Child-{}".format(i))            child.setCheckState(0, QtCore.Qt.Unchecked)        central_widget = QtWidgets.QWidget()        self.setCentralWidget(central_widget)        lay = QtWidgets.QVBoxLayout(central_widget)        lay.addWidget(self.tree)        lay.addStretch(1)        self.tree.collapsed.connect(self.handle_collapsed)        self.tree.expanded.connect(self.handle_expanded)    def handle_collapsed(self, index):        h = self.tree.rowHeight(index) + self.tree.header().height() + 1        self.adjust_height(h)    def handle_expanded(self):        h = self.tree.sizeHint().height()        self.adjust_height(h)    def adjust_height(self, height):        self.tree.setFixedHeight(height)    def showEvent(self, event):        index = self.tree.indexFromItem(self.tree.topLevelItem(0))        if self.tree.isExpanded(index):            QtCore.QTimer.singleShot(0, self.handle_expanded)        else:            QtCore.QTimer.singleShot(                0, lambda index=index: self.handle_collapsed(index)            )        super().showEvent(event)app = QtWidgets.QApplication([])w = MainWindow()w.show()app.exec_()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python