PyQt, Qtable очищает столбец при включенной сортировке

У меня есть ошибка в следующей функции. Эта функция обновляет таблицу, корректирует размеры столбцов и сортирует таблицу. Но в некоторых случаях для некоторых строк текст в столбцах 3 и 4 пуст. Я узнал, что это происходит в разделе "проблемный код". Что я не так в этом разделе? Я просто хочу изменить размер для определенных столбцов. Пожалуйста, помогите разобраться в проблеме или покажите мне мои ошибки.

def print_day_worklog(self):
    logging.info('RefReshing day worklog table')
    selected_day = self.ui.dateDayWorklogEdit.date().toPyDate()
    day_work = db.get_day_worklog(self.creds[3], selected_day)
    self.ui.tableDayWorklog.setRowCount(len(day_work))
    for row, entry in enumerate(day_work):
        e0 = QtGui.QTableWidgetItem(entry[0])
        e1 = QtGui.QTableWidgetItem(entry[1])
        e2 = QtGui.QTableWidgetItem(entry[2].strftime('%H:%M'))
        e3 = QtGui.QTableWidgetItem(entry[3].strftime('%H:%M'))
        e4 = QtGui.QTableWidgetItem(utils.get_time_spent_string(entry[2],
            entry[3]))
        # debug
        print e0.text(), e1.text(), e2.text(), e3.text(), e4.text()
        self.ui.tableDayWorklog.setItem(row, 0, e0)
        self.ui.tableDayWorklog.setItem(row, 1, e1)
        self.ui.tableDayWorklog.setItem(row, 2, e2)
        self.ui.tableDayWorklog.setItem(row, 3, e3)
        self.ui.tableDayWorklog.setItem(row, 4, e4)

    # problem code starts
    self.ui.tableDayWorklog.horizontalHeader().setResizeMode(1,
        QtGui.QHeaderView.Stretch)
    for column in (0,2,3,4):
        self.ui.tableDayWorklog.resizeColumnToContents(column)
        self.ui.tableDayWorklog.horizontalHeader().setResizeMode(column,
            QtGui.QHeaderView.Fixed)
        self.ui.tableDayWorklog.horizontalHeader().setResizeMode(column,
            QtGui.QHeaderView.Fixed)
    self.ui.tableDayWorklog.sortByColumn(2,0)
    # problem code ends

P.S. выглядит непонятно, но это потому что я пытаюсь поймать баг


person Nikolai Golub    schedule 21.01.2013    source источник


Ответы (1)


Проблема в сортировке таблицы. Я нашел эту идею в этот вопрос. я только что добавил

self.ui.tableDayWorklog.setSortingEnabled(False)

до заполнения таблицы и этого

self.ui.tableDayWorklog.setSortingEnabled(True)

после этого. и это помогло

person Nikolai Golub    schedule 23.01.2013