愚蠢的問題,但我不能找到這個垃圾約一個小時的路。我有一個QTableView
小部件,試圖用QStandardItemModel
添加行。在構造函數,如何在setModel()方法之後將appendRow添加到QStandardItemModel?
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數據在裏面)!我想,我必須以某種方式「更新」模式的內容,但我不能找到模型文檔正確的方法......
任何幫助嗎?
謝謝!
是的,你說得對!謝謝 - 我的錯... – mosg