| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Аналог DataTable из .NET в Qt |
| Автор: franzR 31.5.2011, 15:42 |
| Интересует таблица в которую можно в ручную внести данные не связывая ни с какой SQL таблицей или чем то прочим. Знаю что есть QSqlTableModel, но она заточена для манипулирования данными в SQL таблице. Вот как в .NET DataTable. Интересует такой аналог по простой причине, чтоб можно было делать Select из такой таблицы как в .NET DataTable, быстрое перемещение по данным и такая же быстрая их обработка. |
| Автор: Artemon 31.5.2011, 16:24 |
| QTableWidget |
| Автор: franzR 3.6.2011, 16:22 | ||
| Хорошо если его использовать как скрытый компонент, то согласен. А если мне нужно потом вывести все это на форму: в .NET это делается так
и все, все шлепнулось на форму. Возможно ли в Qt проделать что то вроде такого? |
| Автор: bsa 3.6.2011, 17:13 | ||
Любой наследник QWidget (QTableWidget в том числе) может быть помещен на форму. Более того, может быть сам формой!
|
| Автор: math64 3.6.2011, 21:52 | ||
В Qt это делается так:
|
| Автор: franzR 17.6.2011, 18:16 | ||
| Добрый день. Может нужно бы создать новую тему но все же попробую спросить еще в этой. Спасибо за совет с QTableWidget, немного разобрался. Теперь вопрос следующего характера. Вот на форме добавляются данные пользователем в QTableWidget в которой cellWidget, благо, позволяет добавить в себя различные виджеты, и я использую там много QComboBox-ов. Вычитывание из SQLITE базы проходит отлично и я заполняю табличку данными и комбо боксы выставлены в нужных позициях, и все хорошо когда нужен SELECT или INSERT. Но вот теперь чтоб UPDATE сделать т.е. все эти выбранные из базы и намодифицированные пользователем данные снова легли в базу не могу понять как его сделать. Увидел возможность работать с моделью "Model-Based" как то так
Казалось бы идеальный вариант... И в QTableWidget есть setModel() но он приватный и юзать его нельзя. Пошерстив в инете пока не смог найти как бы его прикрутить данные из моего уже хорошо редактируемого QTableWidget в QSqlTableModel чтоб та, прекрасно себе приняла изменения и внесла их в базу.... Пока на ум приходит одно решение, сравнивать выбранные данные из QSqlTableModel с теми что отредактированные были QTableWidget пользователем, а уже перед занесением изменений, менять в ручную QSqlTableModel и делать submitAll ()... Но мне кажется что это мартышкин труд, подскажите пожалуйста как это сделать правильно? |
| Автор: Greeneyed 17.6.2011, 21:36 |
| По хорошему тебе надо было пользоваться QTableView, чтобы можно было его легко связать с моделью. А для вставки в таблицу комбобоксом, нужно было написать свой делегат. В делегате нужно было бы переопределить методы редактирования и, если ты хочешь отображать комбобокс в режиме просмотра, переопределить paint() . |