Глупый вопрос, но я не могу найти выход из этого дерьма около часа. У меня есть QTableView
виджет, пытающийся добавить строки с QStandardItemModel
. In ctor, до
tableView->setModel( MyStandardItemModel );
Я запускаю эту функцию:
void MyDialog::addItem( const SomeSection& section )
{
SignalBlocker< QStandardItemModel > blocker( model_ );
QStandardItem* visibilityItem = new QStandardItem;
visibilityItem->setCheckable( true );
visibilityItem->setCheckState( !section.hidden ? Qt::Checked : Qt::Unchecked );
visibilityItem->setData( QVariant::fromValue( section ), Qt::UserRole + 1 );
QStandardItem* descriptionItem = new QStandardItem( section.name );
QStandardItem* signatureItem = new QStandardItem;
if( section.sign )
{
signatureItem->setToolTip( tr( "Требует подписи" ) );
signatureItem->setIcon( QIcon( ":/signatures/images/signatures/check-sgn.png" ) );
}
model_->appendRow( StandardItemList() << visibilityItem << descriptionItem << signatureItem );
}
PS: StandardItemList
это просто typedef QList< QStandardItem* > StandardItemList;
Итак, сначала я сделал addItem()'s
, а затем setModel()
, и все строки видны в таблице. НО , когда я пытаюсь добавить еще один ряд позже (в это время нажата кнопка), с
addItem( MyNewSection );
Я не вижу изменений в виджете QTableView
(в нем нет новой строки и нет новых данных MyNewSection)! Я думаю, что мне нужно как-то «обновить» содержимое модели, но я не могу найти правильные методы из документации модели ...
Любая помощь?
Спасибо!