2013-03-09 248 views
1

我有一段代碼在我的應用程序如下:意外行爲

....

QStandardItemModel* authorModel = getAuthorModel(author); 

// Create result tab 
QTableView* tblView = new QTableView(); 
tblView->setModel(authorModel); 

controller.queryAuthor(author, authorModel); 
qDebug() << authorModel->setHeaderData(0, Qt::Horizontal, QVariant("Author Name"), Qt::DisplayRole); 
qDebug() << authorModel->setHeaderData(1, Qt::Horizontal, QVariant("Author Id"), Qt::DisplayRole); 

int tabIdx = ui->mainTabWidget->addTab(tblView, author); 
ui->mainTabWidget->setCurrentIndex(tabIdx); 

tblView->setColumnHidden(1, true); 

該代碼多次調用創建不同tableviews。當authorModel爲空時,則設置headerdata失敗,並且setColumnHidden失敗,一旦填充數據,將顯示默認數字標題並顯示第1列。兩個qDebug語句都返回false。

然而,當同樣的人口模型被用來創建一個新的表視圖,在新的視圖列1沒有隱藏的問題,及標頭設置,因爲他們應該。兩個qDebug語句都返回true。

問題是什麼?如何緩解?

+1

你試過authorModel-> setColumnCount(2)設置列標題時,模型是空的前設置? – Viv 2013-03-09 20:36:13

+0

@Viv解決了它。非常感謝你。 – lorefnon 2013-03-09 21:22:33

+0

您的歡迎:)發佈相同的答案,爲什麼這可以解決您的問題 – Viv 2013-03-09 21:46:24

回答

1

踏入QStandardItemmodel實施表明,對於這些功能,除非列中存在以開始更新標題數據沒有影響。

這因此可以通過設置模式旨在通過使用

authorModel->setColumnCount(2); 

即使模型數據爲空列數將返回2通過這種方式與調用之前使用的列數各地工作設置標題數據要細,你的情況