QTableView,QStandardItemModel中對(duì)數(shù)據(jù)進(jìn)行排序(pyqt5,python)

在QT中為了通過(guò)表格展示數(shù)據(jù)時(shí),通常采用QTableView組件來(lái)展示。
常用的表格儲(chǔ)存方式就是通過(guò)QStandardItemModel來(lái)進(jìn)行存儲(chǔ)

代碼示例如下:

self.model=QStandardItemModel()
self.tableView.setModel(self.model)
...
self.model.setItem(0,0,QStandardItem(item.text()))#通過(guò)改變model中的值來(lái)改變QTableWidget中展示的表格

而如果要對(duì)表格的某列按照降序(或升序)排列時(shí),代碼如下:

self.tableView.sortByColumn(0,Qt.DescendingOrder) 
或
self.model.sort(0,Qt.DescendingOrder)  #升序Qt.AscendingOrder 

即無(wú)論對(duì)model還是對(duì)tableview進(jìn)行排序均能得到效果。

但是對(duì)數(shù)值進(jìn)行排序是則會(huì)產(chǎn)生問(wèn)題,例如:

某列數(shù)值{1,2,3...,99}進(jìn)行降序排序,排序結(jié)果則為
{99,98,97......91,90,9,89....,11,10,1}

其根本原因在于setItem函數(shù)輸入的數(shù)據(jù)只能是字符串類(lèi)型,因此在排序時(shí)將會(huì)把數(shù)值當(dāng)做字符串進(jìn)行排序

如何在輸入函數(shù)值時(shí)保留原始數(shù)據(jù)的屬性從而使得排序正常呢?
可以使用setData函數(shù)

item =QStandardItem()
item.setData(number_data,Qt.DisplayRole) #將number_data替換為數(shù)值即可
self.model.setItem(0,0,item)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容