PyQt4 移动带控件的 QTableWidget 行

1 投票
1 回答
916 浏览
提问于 2025-04-15 23:30

我在我的PyQt4应用程序中有一个方法。r2是要移动的行号,r1是它应该被移动到的位置。为了更清楚地说明:这个表格是用cellWidgets填充的,而不是widgetItems。

def move_row(self, r1, r2):
    tt = self.tableWidget
    tt.insertRow(r1)
    for c in range(tt.columnCount()):
        tt.setCellWidget(r1, c, tt.cellWidget(r2 + 1, c))
    tt.removeRow(r2 + 1) # <--- ???

如果我把最后一行注释掉,程序的表现就符合预期:新行会插入到r1的位置,里面填充的是来自r2的控件(现在是r2+1),而r2+1这一行是空的。如果我把这一行隐藏起来,程序也能正常工作,虽然这不是我想要的(因为我给行编号,不想让这个隐藏的行占用编号)。但是如果我删除这一行,最开始属于它的控件就会消失。看起来这些控件的归属在第一次放置时就确定了,移动后并没有改变。

有什么想法吗?

1 个回答

1

我最后选择了复制小部件的值。

撰写回答