Название: Мое знакомство с QSqlTableModel Отправлено: blood_shadow от Сентябрь 10, 2011, 15:38 И так, довелось мне на днях писать программу для работы с БД, сама программа представляла из себя
коннект к базе данных и отображение запрошенных данных в представлении, так как времени у меня не было я оставил затею использовать QSqlTableModel, а просто сделал сабкласс QAbstractTableModel и определил ф-ции вроде select() внутри которых я использовал QSqlQuery, пример моей ф-ции select(): Код
Все отлично, но на днях я подумал что это не "тру-вей" и QSqlTableModel сделана не просто так для красоты, решил сделать тестовую программу, но тут натолкнулся на подводные, хотя и как оказалось камни и не совсем подводные: 1. Если у таблицы имя кириллическое вызов ф-ции bool QSqlTableModel::select () вернет false и запрос не будет обработан. Порывшись в исходниках, а именно в qt\src\sql\models\qsqltablemodel.cpp я увидел что они используют класс QLatin1String, наверно это и есть корень зла 2. После успешного переопределения ф-ции select () проблема осталась в выделении таблицы, короче говоря таблица отображалась коректно, но ячейку либо строчку выделить нельзя(отображается серым цветом), причем в если имя таблицы с латиницы отображается все нормально, весьма и весьма странно, короче вам необходимо еще и переопределить Qt::ItemFlags QAbstractItemModel::flags ( const QModelIndex & index ) const Вывод как чет я совсем не почуствовал выгод при использовании QSqlTableModel вместо сабкласса QAbstractTableModel + QSqlQuery для запросов Буду рад любым мыслям и рассуждениям на данную тематику :) Название: Re: Мое знакомство с QSqlTableModel Отправлено: Странник от Сентябрь 10, 2011, 19:40 вывод: кириллические имена объектов в БД не тру <= ) а для вашей задачи попробуйте QSqlQueryModel - отображает результаты произвольного запроса только для чтения.
я пользуюсь QSqlTableModel, потому что он поддерживает редактирование. если в качестве источника данных использовать view с instead of триггерами, получается довольно удобно. Название: Re: Мое знакомство с QSqlTableModel Отправлено: blood_shadow от Сентябрь 10, 2011, 23:24 вывод: кириллические имена объектов в БД не тру <= ) а для вашей задачи попробуйте QSqlQueryModel - отображает результаты произвольного запроса только для чтения. насчет кирилических символов это такое дело, много БД существует именно с русскими именами таблиц, дело я пользуюсь QSqlTableModel, потому что он поддерживает редактирование. если в качестве источника данных использовать view с instead of триггерами, получается довольно удобно. в том что тролли не предусмотрели это использовав класс QLatin1String вместо QString с которым не было бы проблем... а QSqlQueryModel - можно сделать и для редактирования вот что говорит ассистант: Код: The model is read-only by default. To make it read-write, you must subclass it and reimplement setData() and flags(). |