QTableWidget中的可折叠行

时间:2019-04-29 18:17:17

标签: python pyqt pyqt5

我有一个运行良好的PyQt qTableWidget,但是我有多行具有相似的信息,我希望将其折叠在第一行下。这类似于Excel如何将行分组在一起。参见以下示例。对于此示例,我想将前3行(所有“ Hello World”)归为第一行,就像在Excel示例中一样,其中只能看到一个“ Hello World”。

在qTableWidget中有可能吗?还是有一种方法可以使TreeView成为表?我的实际代码使用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

0 个答案:

没有答案