將列寬保存在QTableView中的標準做法是什麼?QTableView通過QSortFilterProxyModel隱藏/刪除某些列(以任意順序)?請注意,我正在討論在單個實例中隱藏和取消隱藏它們。QSortFilterProxyModel打破columnWidths
我已經嘗試了很多方法(所有醜陋的)來實現它。當然,我做錯了什麼。我已經看過QHeaderView :: saveState()和QHeaderView :: restoreState(),但除非我失去了一些東西,這真的只適用於保存從關機開始。一旦列以不同的順序隱藏和取消隱藏,就會中斷。
QSortFilterProxyModel使用filterAcceptsColumn()可以正常工作。警告是filterAcceptsColumn()在先前返回false的列上返回true時。我運行invalidateFilter()並將其繪製在QTableView中。但是,QTableView使用某個默認值(看起來好像是100)來代替列寬,而不是QSortFilterProxyModel隱藏列之前的寬度。
想法?
對於這樣的控制,僅僅使用QHeaderView :: setSectionHidden()會更智能,並且一起去掉QSortFilterProxy? 另一個解決方案,我開始,但認爲有點太麻煩是保留一些類型的「真正的索引」與QHeaderView認爲是索引的容器。蒂姆。謝謝, – 2013-03-27 07:13:44