在項目中遇到了這樣的問題,是在使用過濾模型的時候。。
在更新模型的時候,
當過濾模型刪除重新new,而源模型沒有重新new後,使用setColumnWidth ( int column, int width),;就會不起作用。
後來我試著不再重新new過濾模型,setColumnWidth就可以使用了。
難道過濾模型和源模型一定保持相同的刪除和分配 setColumnWidth才起作用.
源模型重新寫入資料需要再次設定隱藏列,源模型的清空使用
int rowCount = m_tableModel->rowCount();
int columnCount = m_tableModel->columnCount();
for(int i = 0; i<rowCount; i++)
{
for(int j = 0; j<columnCount; j++)
{
QStandardItem *pItem = m_tableModel->item(i, j);
if(pItem)
{
delete pItem;
}
}
}
更新資料
………………
………………
………………
重新設定隱藏
m_tableModel->setColumnCount(13);
m_filterModel->setSourceModel(m_tableModel);
m_filterModel->setDynamicSortFilter(true);
m_tableModel->setHorizontalHeaderLabels(m_headerString);
m_pTableView->setModel(m_filterModel);
m_strFilter = "01234";
m_filterModel->setFilterRegExp(QRegExp(QString("[%1]").arg(m_strFilter))); //過濾的規則
m_pTableView->setColumnHidden(12, true);