QTableWidg中的可折叠行

2024-04-19 15:53:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个PyQt qTableWidget可以很好地工作,但是我有多个具有类似信息的行,我想将它们折叠到第一行下面。这类似于Excel将行分组的方式。请参见下面的示例。在这个例子中,我想把前3行,所有的“Hello World”分组在第一行下面,就像在Excel例子中只有一个“Hello World”可以看到的那样。你知道吗

这在qTableWidget中可能吗?或者有没有办法让树视图变成一张桌子?我的实际代码使用QAbstractTableModel来处理数据。你知道吗

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")
        self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
        self.tableWidget.setObjectName("tableWidget")
        self.gridLayout.addWidget(self.tableWidget, 0, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)

        self.tableWidget.setRowCount(4)
        self.tableWidget.setColumnCount(2)

        self.tableWidget.setItem(0, 0, QtWidgets.QTableWidgetItem('Hello'))
        self.tableWidget.setItem(0, 1, QtWidgets.QTableWidgetItem('World'))
        self.tableWidget.setItem(1, 0, QtWidgets.QTableWidgetItem('Hello'))
        self.tableWidget.setItem(1, 1, QtWidgets.QTableWidgetItem('World'))
        self.tableWidget.setItem(2, 0, QtWidgets.QTableWidgetItem('Hello'))
        self.tableWidget.setItem(2, 1, QtWidgets.QTableWidgetItem('World'))
        self.tableWidget.setItem(3, 0, QtWidgets.QTableWidgetItem('Good Bye'))
        self.tableWidget.setItem(3, 1, QtWidgets.QTableWidgetItem('World'))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

How it Works now

Excel Group Expanded

Excel Group collapsed


Tags: selfhelloworldsysexcel例子setitemqtwidgets