我有一系列结构。
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秒在后台运行一次。
这是最好的方法吗?如何在背景上重复更新模型?
答案 0 :(得分:0)
我建议为QStandardItemModel创建一个子类。
在它的构造函数中,它将获取一个指向主集合的指针,它可以用来填充它的行。它还会连接主集合中的一些信号,以告知它何时发生了变化。
假设您的主要收藏品有“itemRemoved”信号。您可以将它连接到“onItemRemoved”插槽,您可以在其中找到并删除QStandardItemModel子类中的相应行。
这样,您不需要每X秒轮询一次;一旦“真实”模型发生变化,视图模型就会发生变化。