У меня есть QTableWidget
, с помощью которого я могу добавлять строки, нажимая кнопку. Проблема в том, что у меня _table->setSortingEnabled(true);
, и когда я вставлю новую строку, я не узнаю, где она. Поскольку, поскольку я установил сортировку таблицы, когда я добавляю строку, эта строка переместится в ее позицию (в зависимости от того, какой столбец сортируется). Как мне тогда узнать, какой именно?
Пример с одним столбцом (Имя), отсортированным в алфавитном порядке:
Name |
------
abc
toto
zozo
Если я сейчас добавлю строку вроде следующей:
int newRow = _table->rowCount();
_table->insertRow(newRow);
QTableWidgetItem *item1 = new QTableWidgetItem;
item1->setText("boom");
_table->setItem(newRow, 0, item1);
Строка будет находиться между «abc» и «toto».
Name |
------
abc
<<< boom
toto
zozo
Здесь он будет работать правильно, но у меня несколько столбцов, и если сейчас я попробую, например:
QTableWidgetItem *item2 = new QTableWidgetItem;
item1->setText("45");
_table->setItem(newRow, 1, item2);
Значение, которое изменится, - это значение второго столбца «zozo», а не то, которое мне нужно, «бум».
Я попытался на примере объяснить проблему, надеюсь, помогло. Итак, как я могу добавить новую строку, установить ее текст для каждого столбца, если у меня включена сортировка на моем QTableWidget
?
Редактировать: ответ от невзрывоопасного (в комментариях):
Для второго QWidgetItem
просто нужно проделать то же самое:
QTableWidgetItem *item2 = new QTableWidgetItem;
item1->setText("45");
_table->setItem(item1->row(), 1, item2); // change newRow by item1->row()
QTableWidgetItem::row()
, чтобы получить строку изitem1
- person Nafis Zaman   schedule 09.08.2013