PyQt4 使用小部件移动 QTableWidget 行

发布于 2024-09-04 05:11:17 字数 534 浏览 3 评论 0原文

我的 PyQt4 应用程序中有以下方法。 r2是要移动的行数,r1是应该移动的位置。澄清一下:表格中填充的是 cellWidget,而不是 widgetItem。

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 行为空。如果我什至隐藏这一行,它的表现很好,尽管这不是我想要的(我对行进行了编号,并且我不希望这个隐藏的行占据该编号)。 但如果我删除该行,它最初拥有的小部件就会消失。看起来他们的所有权是在第一次放置时获得的,并且在移动后不会改变。

有什么想法吗?

I have the following method in my PyQt4 app. r2 is the number of row to move, and r1 is the position where it should be moved. To clarify: the table is filled with cellWidgets, not 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) # <--- ???

If I comment out the last line, it behaves as expected: the new row is inserted at position r1, it is filled with widgets from r2 (now it's r2+1), and the r2+1 row is empty. If I even hide this row, it behaves well, though it is not what I want (I have the rows numbered, and I don't want this hidden row to occupy the number).
But if I remove the row, the widgets initially owned by it disappear. Looks like their ownership is taken on first placement, and is not changed after the move.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

花桑 2024-09-11 05:11:17

我最终完成了小部件值复制。

I finally ended up with widgets values copying.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文