2011-05-14 15 views
5

Aşağıdakiler bir satır ekliyor. Tablo tarafından değil, kod tarafından çağrılır ve düzgün bir şekilde yeni bir satır eklendiğinde dataChanged çağrılır istiyorum, bu çalışmadığı halde, tablo bir şey yapmaz. Neyi yanlış yapıyorum?Nasıl veri arayacagimChanged

void MyModel::add(const Person& p) 
{ 
    people.push_back(p); 

    QModelIndex top = createIndex(people.count() - 1, 0, 0); 
    QModelIndex bottom = createIndex(people.count() - 1, 3, 0); 

    emit dataChanged(top, bottom); // emit layoutChanged() if headers changed 
} 

cevap

8

dataChanged yalnızca veri mevcut çalışır, sen beginInsertRows()/endInsertRows()

void MyModel::add(const Person& p) 
{ 
    beginInsertRows(QModelIndex(), people.count(), people.count()); 
    people.push_back(p); 
    endInsertRows(); 

    QModelIndex top = createIndex(people.count() - 1, 0, 0); 
    QModelIndex bottom = createIndex(people.count() - 1, 3, 0); 

    emit dataChanged(top, bottom); // emit layoutChanged() if headers changed 
} 
çalışması gerekir

çağırmanız gerekir. emit dataChanged

'a bile ihtiyacınız yoktur