2013-05-22 1 views
0

구조체 모음이 있습니다.Qt의보기 모델 새로 고침

나는 열을 항목 1, 항목 2 항목 3을 만든 내 기본 창에서
typedef struct _myStruct 
{ 
    int item1; 
    int item2; 
    int 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

QStandardItemModel의 하위 클래스를 만드는 것이 좋습니다.

생성자에서 행을 채우는 데 사용할 수있는 주 컬렉션에 대한 포인터를 사용합니다. 또한 주 컬렉션의 일부 신호를 연결하여 변경된시기를 알려줍니다.

메인 컬렉션에 "itemRemoved"신호가 있다고 가정 해주십시오. "onItemRemoved"슬롯에 연결하면 QStandardItemModel 하위 클래스에서 해당 행을 찾아 삭제할 수 있습니다.

이렇게하면 X 초마다 폴링 할 필요가 없습니다. "실제"모델이 변경되는 즉시보기 모델이 변경됩니다.

관련 문제