我有一個QTableWidget
,第一列填充了可選項目,所以我需要重載這些項目才能對它們進行排序。排序按預期工作時,我點擊該列的標題(行排序 - 首先有檢查行,然後不檢查)。調用setSortingEnabled(1)時發生意外的行爲
,當我跑我的GUI,不上任何列的標題點擊排序表,然後做到這一點,會出現問題:
tableWidget.setSortingEnabled(0);
// check/uncheck some checkable items here
tableWidget.setSortingEnabled(1);
在這種情況下覆蓋__lt__
被稱爲100+次,但我不期望,因爲我沒有點擊該列的標題進行排序。那麼,爲什麼__lt__
被調用?爲什麼它比較了一些可檢查的項目,即使我沒有點擊該列的標題來對它們進行排序?
請幫我,打電話__lt__
當我有30多行時,會消耗太多的時間。
謝謝您的回答。首先,我已經在'setSortingEnable(1)'之前和之後嘗試過'sortIndicatorSection()',兩個結果都是「7」。我有7列(0-6),所以我猜想,默認的排序部分不是0,但列表的表格(在我的情況下,第7節)儘管排序行爲像它是0.也許這是因爲我有tableWidget而不是tableView ? – Aleksandar
無論如何,你的回答指向我正確的方向,我發現這個:void QHeaderView :: setSortIndicator(int logicalIndex,Qt :: SortOrder order)' - _「logicalIndex可能是-1,在這種情況下,沒有排序指示器被顯示,模型將返回到它自然的,未排序的順序。「_。 這也適用於tableWidget,在tableWidget填充之前放置該行解決了我的問題。 – Aleksandar
QTableWidget繼承自QTableView。但在內部處理模型。奇怪的是7回來了。很高興幫助反正:) – Trompa