У меня есть QTableWidget
с первым столбцом, заполненным проверяемыми элементами, поэтому мне нужно было перегрузить эти элементы, чтобы их сортировать. Сортировка работает, как ожидается, когда я нажимаю на заголовок этого столбца (строки сортируются - сначала проверяются строки, а затем не проверяются).Неожиданное поведение, когда setSortingEnabled (1) называется
Проблема возникает, когда я запускаю мой GUI и не нажать на заголовок любого столбца, чтобы отсортировать таблицу, а затем сделать это:
tableWidget.setSortingEnabled(0);
// check/uncheck some checkable items here
tableWidget.setSortingEnabled(1);
В этой ситуации переопределен __lt__
называется 100+ раз, но я не ожидайте этого, потому что я не нажимал на заголовок этого столбца для сортировки. Итак, почему называется __lt__
? Почему он сравнивает некоторые проверяемые элементы, даже если я не нажал на заголовок этого столбца, чтобы отсортировать их?
Пожалуйста, помогите мне, вызывая __lt__
, занимает слишком много времени, когда у меня есть 30+ строк.
Спасибо за ваш ответ. Прежде всего, я уже пробовал 'sortIndicatorSection()' до и после 'setSortingEnable (1)', оба результата были «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 вернулись. рад помочь anyways :) – Trompa