PyQT - Make integers and dates in QTableWidget properly sortable
Hi.
I put the data into my QTableWidget tableView using a loop:
Code:
for i in range(0, len(res)):
self.
tableView.
setItem(i,
2,
QTableWidgetItem(str
(create_dataframe
(res
)[2][i
]))) self.
tableView.
setItem(i,
3,
QTableWidgetItem(str
(create_dataframe
(res
)[3][i
])))
where
Code:
create_dataframe(res)[2][i]
returns value of class 'int' and
Code:
create_dataframe(res)[3][i]
returns value of class 'datetime.datetime' (like '2017-03-25 16:51:24'). The question is: how do I make this items properly sortable through
Code:
self.tableView.setSortingEnabled(True)
, i.e. not as strings, but as integers and datetime respectively? I know that I should use setData and Qt.DisplayRole, but could you please give an example using this short piece of code?
Thank you.
Re: PyQT - Make integers and dates in QTableWidget properly sortable
OK, here is the answer I came up with by myself:
Code:
self.
tableView.
setItem(i,
2,
QTableWidgetItem(str
(create_dataframe
(res
)[2][i
])))it3.
setData(Qt.
EditRole,
QVariant(create_dataframe
(res
)[3][i
]))self.tableView.setItem(i, 3, it3)
I.e. there is no need to transform datetime value: it can be properly sorted in string form. As for integer values, I have to create an instance of QTableWidgetItem(), then use .setData with QVariant on it. After this I can setItem to the table.