是否可以将行从qtablewidget转移到另一个qtablewidget?

问题描述

我在某些单元格中有一行包含文本数据的行,而其他单元格中有小部件,是否可以在行中传输这些单元格,所以我的意思是将整个行转移到另一个qtablewidget中,而不必将该行拆分为小数据然后重建再次放入另一个qtablewidget吗? 注意:请不要问我最低限度的专业人士-因为我只是在问之前才问我,所以我知道什么在等我。

解决方法

没有像QTableWidget那样的函数(唯一类似的函数仅对于QStandardItemModel:takeRow()存在)。

要删除项目,您需要在目标表上使用insertRow(),在源行的每一列上使用takeItem(),在目标上使用setItem(),最后使用{{3 }}。

    def moveRow(self,row):
        targetRow = self.target.rowCount()
        self.target.insertRow(targetRow)
        for column in range(self.source.columnCount()):
            item = self.source.takeItem(row,column)
            if item:
                self.target.setItem(targetRow,column,item)
        self.source.removeRow(row)

不幸的是,这不会让您对单元小部件做任何事情。在项目视图中的单元格上设置窗口小部件时,即使您尝试将removeWidgetsetCellWidget与另一个小部件,先前的小部件将由Qt在内部 删除(请参见removeRow()的源代码,removeWidget {{ 1}})。

唯一的解决方案是检查单元格是否具有小部件,创建相同类的新实例并复制其属性。

可能的解决方法是使用带有布局的容器小部件添加单元小部件,将实际的小部件添加到该布局中,然后创建一个新的容器并为其设置布局:

setCellWidget