Qt-多个QtableWidget可以共享链接的项目

Qt - Can Several QtableWidgets share linked Items

本文关键字:链接 项目 共享 多个 QtableWidget Qt-      更新时间:2023-10-16

Qt多个表小部件共享链接项目

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

样品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());
}

有没有一种方法可以让我每次用更少的代码向每个表Widget添加一列。

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

有没有一种方法可以以某种方式将它们链接起来,或者唯一的方法是将项目更改作为信号进行检查。

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

有人能告诉我正确的方向吗?我唯一的想法是使用ItemChanged的信号。难道没有更好的方法吗?

非常感谢您抽出时间。

如果你的表是相同的数据,你应该考虑采取一些不错的模型视图控制器操作(在申请工作时也经常说这个短语,他们喜欢这样;(

为此,您需要创建一个表模型。和一个TableView小部件。通过这种方式,数据是共享的,因此它只存在于一个地方。所有的TableView都只显示数据。你可以看看QSortedFilterProxy来过滤特定视图的数据(我从来没有用过,所以不知道(。这样,您就可以将playerModel放在某个位置,并且每个视图都有一个proxyModel,它只显示例如活动的玩家。