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 に答える