2015-02-10 2 views
0

У меня есть виджет таблицы, который содержит 2 столбца. Первый столбец содержит отметки времени, а второй столбец содержит сообщение, соответствующее метке времени. Я хочу, чтобы пользователь мог щелкнуть заголовок столбца timestamp и отменить порядок. Я также хочу, чтобы пользователь мог нажимать на заголовок сообщения и отправлять все сообщения в алфавитном порядке. Использование setSortingEnabled отлично работает для заголовка сообщения, но из-за формата метки времени это не будет правильно сортировать отметки времени. Есть ли способ setSortingEnabled() только в столбце сообщений, и когда пользователь нажимает на заголовок timestamp, он вызывает настраиваемую функцию, которая сортируется?QTableWidget setSortingEnabled в определенном столбце Qt

+0

Проверьте ответ здесь: http://stackoverflow.com/questions/7848683/ how-to-sort-datas-in-qtablewidget Вы можете su bclass QTableWidgetItem и реализовать оператор <. Надеюсь, это поможет. – danielfranca

ответ

0

SetSortingEnabled() влияет на все столбцы. Вы можете установитьSortingEnable (False), создать функцию с пользовательской сортировкой для столбца timestamp и стандартную сортировку для других столбцов и подключить эту строку к разделу horizonterHeaders signalClicked(). Я пытался в pyqt5, он работает, но много работает с распознаванием фактического sortOrder, установкой и удалением заголовков заголовков и т. Д.

Более простой способ - установить подходящий формат для метки времени, выровненной по правому краю, фиксированной длины, слева, заполненного '0', в python3, например:

ts = '{:0>15}'.format(timestamp) 

слева заполняются пробелами тоже работает:

ts = '{: >15}'.format(timestamp) 
Смежные вопросы