0

Qt 几个 tableWidgets 共享链接的 Items

嗨,在 Qt 中,我有一个 QMainWindow -> centralWidget (QWidget) -> QtabWidget -> 然后是 10 个选项卡 (QWidgets) -> 每个选项卡最多有 26 个 QtableWidgets:

样品 1

样品 2

这个想法是,而不是这个:

    void MainWindow::on_pushButton_Add_Player_clicked()
{
     ui->tableWidget_Players->insertRow(ui->tableWidget_Players->rowCount());
     ui->tableWidget_Defensive->insertRow(ui->tableWidget_Defensive->rowCount());
     .
     . [10 tableWidgets in Total]
     .
     ui->tableWidgetAll->insertRow(ui->tableWidget_Players->rowCount());
}

有没有办法让我每次都可以用更少的代码向每个 tableWidget 添加一列。

当然不是这样,事实上我想知道是否有一种方法可以链接每个项目的一些项目,这些项目实际上是相同的项目,但它在每个项目中都重复,例如玩家名称每行相同在每个 tableWidget 中,因此如果用户在一个中编辑名称,它应该在每个 tableWidget 的同一行中更改它。

有没有办法以某种方式链接它们,或者作为信号检查项目更改的唯一方法。

我还希望如果我在一个 tableWidget 中按列排序,那么每个 tableWidget 中的新行排列应该是相同的。

谁能指出我正确的方向,我唯一的想法是使用 ItemChanged 的​​信号。没有更好的方法吗?

非常感谢您的时间。

4

1 回答 1

0

如果您的表是相同的数据,您应该考虑进行一些不错的模型视图控制器操作(在申请工作时也经常说这句话,他们喜欢这样;))

为此,您需要创建一个tablemodel。和一个TableView小部件。这样,数据是共享的,所以它只存在一个地方。你所有TableView的只是显示数据。您可以查看QSortedFilterProxy来过滤特定视图的数据(我从未使用过,所以不知道)。这样你就有了自己的playerModel位置,并且每个视图都有一个 proxyModel,它只显示例如活跃的玩家。

于 2015-07-02T23:44:31.383 回答