0

我有一个结构集合。

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 秒在后台运行一次。

这是最好的方法吗?如何在后台重复更新模型?

4

1 回答 1

0

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

在它的构造函数中,它需要一个指向主集合的指针,它可以用它来填充它的行。它还将连接来自主集合的一些信号,以判断它何时发生了变化。

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

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

于 2013-05-22T20:17:35.007 回答