在Qt中刷新视图模型

时间:2013-05-22 18:07:06

标签: c++ qt thread-safety

我有一系列结构。

typedef struct _myStruct
{
  int item1;
  int item2;
  int item3;
  .
  .
  .
}

在我的主窗口中,我创建了列item1,item2 item3 ...

QStandardItemModel *model = new QStandardItemModel();
model->setHorizontalHeaderItem(0, new QStandardItem(QString("Item1")));
model->setHorizontalHeaderItem(1, new QStandardItem(QString("Item2")));
.
.
.

并在循环中填充模型行。

主要集合由回调更改,然后我创建一个新的QStandartItemModel并执行相同的操作。

QStandardItemModel *model2 = new QStandardItemModel();
.
.
.
.

我设置model = model2;后,每隔x秒在后台运行一次。

这是最好的方法吗?如何在背景上重复更新模型?

1 个答案:

答案 0 :(得分:0)

我建议为QStandardItemModel创建一个子类。

在它的构造函数中,它将获取一个指向主集合的指针,它可以用来填充它的行。它还会连接主集合中的一些信号,以告知它何时发生了变化。

假设您的主要收藏品有“itemRemoved”信号。您可以将它连接到“onItemRemoved”插槽,您可以在其中找到并删除QStandardItemModel子类中的相应行。

这样,您不需要每X秒轮询一次;一旦“真实”模型发生变化,视图模型就会发生变化。

相关问题