LINUX.ORG.RU

Посоветуйте таблицу (Qt6)

 ,


0

1

Посоветуйте элемент для отображения таблицы.

Хотелки:

1. FullRowSelect

2. Чтобы можно было считать текст из ячейки при обращении по row/column.

3. Изменяемый BackgroundColor для произвольной строки.

4. Без абстрактных моделей

Есть что-нибудь? Пробовал QTableWidget - не читает текст из ячеек. Вернее читает, но все время одну и ту же ячейку.

    for ( int i=0; i<table->rowCount()-1; i++ ){
        QTableWidgetItem *item = table->itemAt(i,0);
        qDebug() << item->text();
    }
Этот код возвращает все время текст первой ячейки (0,0). Хотя в таблице 90 строк и в первой колонке в каждой строке уникальное значение. Что здесь неправильно?

★★★★★

Так ты всегда первую колонку запрашиваешь. table->itemAt(i, 1) вернет тебе вторую и т.д.

panter_dsd ★★★★★
()
Последнее исправление: panter_dsd (всего исправлений: 1)
Ответ на: комментарий от u-235

А, точно! Видимо все 90 пикселей попадают в первую ячейку, поэтому все время возвращает значение из первой.

Ну хотя бы так, без FullRowSelect, может приспособлюсь

Chord ★★★★★
() автор топика

Точно не помню, но есть метод для той идеи что ты хочешь, но не помню точно ли в этом компоненте

doomer
()

По моему опыту, использование QTableWidget и т.п. — признак нубства. В любом более-менее сложном приложении есть смысл перейти на отдельные модели и вьюхи и не заниматься ерундой с лазанием в модель через API виджета. В каких-то совсем простецких случаях QTableWidget допустим, но после освоения работы с model/view желания с ним связываться будет всё меньше и меньше.

annulen ★★★★★
()
Ответ на: комментарий от annulen

Да мне нужен минимум функционала - пробежать по всем строкам и считать первую ячейку и отправить её содержимое в баш-скрипт. И в зависимости от результата скрипта подсветить строку. Всё.

Chord ★★★★★
() автор топика

QTableWidget

А QTableView смотрел? Там MVVM концепция и оно кастомизируется значительно глубже чем QTableWidget, который предназначен для простеньких заполняемых таблиц.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от Chord

Да мне нужен минимум функционала - пробежать по всем строкам и считать первую ячейку и отправить её содержимое в баш-скрипт

А откуда данные в этих ячейках появляются? Может их лучше оттуда собирать, а не из виджета?

annulen ★★★★★
()

прочитал название топика сначала как «посоветуйте убийцу QT6»

NorthernBlow
()
Ответ на: комментарий от annulen

По моему опыту, использование QTableWidget и т.п. — признак нубства.

Ну почему же? А если нужно быстро отобразить табличку простенькую не более 10x100 записей которая в будущем расширяться не планирует? С QTableView там будет куда больше возни.

EXL ★★★★★
()
Ответ на: комментарий от Chord

Ну хотя бы так, без FullRowSelect, может приспособлюсь

Есть там selectionBehavior, можно установить в SelectRows, будет выделение полной строки.

Beewek ★★★
()

QTableWidget - не для серьёзных задач.

Без абстрактных моделей

Вот именно с ними и нужно.

rumgot ★★★★★
()

Вообще, все твои хотелки, кроме 4-й, закрываются как item-based (QTableWidget), так и model-based (QTableView) виджетами. Далее начинаются нюансы.

QTableWidget уместен, когда элементов немного, и таблица используется именно как элемент UI без перерисовок, без претензий на контейнер и т.д. Для более-менее нетривиальных случаев рано или поздно наступает такой момент, когда вынести всё в модель оказывается проще, чем городить обвязки над «простой» таблицей. Я этот путь проходил, если что.

У тебя вообще из ОП непонятно, таблица используется только для отображения, или для ввода тоже? Если первое, то есть подозрение, что ты что-то неправильно делаешь, и считывать надо не из виджета, а оттуда, откуда ты эту таблицу заполняешь.

hobbit ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.