QTable, Простая работа с таблицей |
Здравствуйте, гость ( Вход | Регистрация )
QTable, Простая работа с таблицей |
Frigolem |
31.1.2012, 21:23
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 14 Регистрация: 24.9.2008 Пользователь №: 297 Спасибо сказали: 3 раз(а) Репутация: 0 |
В общем, попытался немного упростить ( или усложнить ) работу с таблицами в самых простых случаях.
Выкладываю два класса: QTable и QTableModel. Первый - собственно для работы, второй - для вьюеров. QTable по сути является обёрткой для табличных моделей для более простого доступа. Если его просто создать, то он создаёт для себя табличную модель по-дефолту, используя класс QTableModel. QTableModel - это по сути таблица QVariant'ов, завёрнутая в модель. Вот несколько вариантов использования: "Вариант 1"
"Вариант 2"
QTable можно использовать для доступа к другим моделям. Например для доступа к модели QFileSystemModel: "Пример использования совместно с QFileSystemModel. Основное написано в слоте my_on_root_changed" "dialog.cpp"
"dialog.h"
Ещё в теории можно выбрать какой-нибудь индекс модели в качестве рутового для таблицы. Это чтобы можно было и с деревом поработать немного. Но на практике это не тестировалось... Подход по-идее такой: "другой рутовый элемент"
Ещё сделана возможность указывать роли при обращении к данным. Но (возможно даже "пока что") поддержка разных ролей не реализована в дефолтной модели QTableModel. А вот с другими моделями в теории может даже работать, но опять же не тестировалось... "роли"
Вот примерно что-то такое. Может быть кому-нибудь понадобится. Лицензия: LGPL. Исходники приложены. Прошу извинить, если не туда положил. У меня ещё мало опыта в выкладывании кодов, потому я не знаю как лучше это делать. По-идее (если идея была правильной), новичку в мире Qt это должно несколько облегчить жизнь.
Прикрепленные файлы
|
|
|
wiz29 |
1.2.2012, 10:50
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
а чем QStandardItemModel и QTableView не устраивает?
|
|
|
Frigolem |
1.2.2012, 11:59
Сообщение
#3
|
Студент Группа: Новичок Сообщений: 14 Регистрация: 24.9.2008 Пользователь №: 297 Спасибо сказали: 3 раз(а) Репутация: 0 |
Насколько я знаю, в QStandardItemModel каждый элемент нужно создавать отдельно:
Поэтому, если нужно создать простейшую таблицу и накидать в неё данных из какого-нибудь списка, тогда требуется писать конвертер из списка элементов в строку/колонку таблицы.В приложенном классе можно кинуть список сразу:
При этом задача замены QStandardItemModel не ставится. QTable в данном случае скорее является дополнением. При этом если нужны дополнительные функции QStandardItemModel, тогда можно просто сделать так:
В таком случае удобно работать с данными через table и производить дополнительную настройку отображения/поведения через саму model. QTableView для отображения здесь используется в любом случае. |
|
|
wiz29 |
1.2.2012, 12:22
Сообщение
#4
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
Насколько я знаю, в QStandardItemModel каждый элемент нужно создавать отдельно не обязательно, можно создать строку и забивать в нее значения. bool QAbstractItemModel::insertRow(...) никто не отменял просто небольшая обертка над интерфейсом QStandartItemModel и упростит работу касающуюся таблиц, но она сама по сути "заточена" под табличное представление данных. на мой взгляд для новичков гораздо важнее "впитать" идеи архитектуры модель-представление, обертки этому не способствуют. |
|
|
Frigolem |
1.2.2012, 21:42
Сообщение
#5
|
Студент Группа: Новичок Сообщений: 14 Регистрация: 24.9.2008 Пользователь №: 297 Спасибо сказали: 3 раз(а) Репутация: 0 |
|
|
|
Текстовая версия | Сейчас: 29.4.2024, 4:59 |