Название: Проблема со вставкой строки в таблицу Отправлено: afro от Июль 05, 2015, 14:22 Здравствуйте!
Возникла проблема во время работы с QSqlDatabase Вот то, что имеется на данный момент: Код: QSqlQuery query; В итоге таблица пустая. Думаю проблема связана с тем что перед вставкой в модель строк надо как то сформировать таблицу. Как с этим разобраться? Название: Re: Проблема со вставкой строки в таблицу Отправлено: sergek от Июль 05, 2015, 14:30 Попробуйте
Код: while(query.next()){ Название: Re: Проблема со вставкой строки в таблицу Отправлено: afro от Июль 05, 2015, 14:31 Попробуйте А i каким задать? Пробовал с -1, эффект тот жеКод: while(query.next()){ Название: Re: Проблема со вставкой строки в таблицу Отправлено: gil9red от Июль 05, 2015, 14:53 Попробуйте А i каким задать? Пробовал с -1, эффект тот жеКод: while(query.next()){ Код: int i = 0; Название: Re: Проблема со вставкой строки в таблицу Отправлено: afro от Июль 05, 2015, 15:58 Не знаю как могла бы помочь замена одного цикла на другой, но это не помогло.
Всё таки есть другие предложения? Может есть другие способы отобразить в tableView результат запроса к бд? Нашёл ещё insertRow, но он принимает какой-то QModelIndex, вряд ли это то. Есть внутренние догадки, что я упускаю какой-то шаг формирования структуры этой таблицы, ведь по сути я могу вызвать setRecord несколько раз и с разными видами Record Название: Re: Проблема со вставкой строки в таблицу Отправлено: Nidxogg от Июль 05, 2015, 16:36 Пробовали?
Код: void QSqlTableModel::setTable ( const QString & tableName ) [virtual] Или можно так, если только для просмотра QSqlQueryModel Код: void QSqlQueryModel::setQuery ( const QSqlQuery & query ) Название: Re: Проблема со вставкой строки в таблицу Отправлено: afro от Июль 05, 2015, 16:59 Пробовали? Код: void QSqlTableModel::setTable ( const QString & tableName ) [virtual] QSqlQueryModel Код: void QSqlQueryModel::setQuery ( const QSqlQuery & query ) Первый вариант пробовал, но у меня запрос (как это...) составной чтоли, то есть несколько таблиц затрагивает. За второй вариант спасибо, но вот ошибка появляется. Как его вызвать если он protected? (http://cs540108.vk.me/c612424/u72290118/docs/1ed6bb3ff9ba/error.png) UPD использовал QSqlTableModel, понял ошибку Название: Re: Проблема со вставкой строки в таблицу Отправлено: gil9red от Июль 05, 2015, 17:14 Всё таки есть другие предложения? В том цикле вывести в консоль значения, возможно ничего не нашлось и цикл вообще не выполнялсяИли нужно вручную указывать количество строк в таблице Может есть другие способы отобразить в tableView результат запроса к бд? Код
Название: Re: Проблема со вставкой строки в таблицу Отправлено: Nidxogg от Июль 05, 2015, 19:35 Цитировать Первый вариант пробовал, но у меня запрос (как это...) составной чтоли, то есть несколько таблиц затрагивает The QSqlTableModel class provides an editable data model for a single database table.Есть ещё вариант с QSqlRelationalTableModel Цитировать The QSqlRelationalTableModel class provides an editable data model for a single database table, with foreign key support. P.S. У себя сложные запрос отображаю с помощью QSqlQueryModel, а редактирование (если требуется) через делегаты Название: Re: Проблема со вставкой строки в таблицу Отправлено: afro от Июль 05, 2015, 19:49 gil9red, Это пример для одной таблицы, у которой надо вывести 2 поля как я понял.
У меня же 3 таблицы и запрос Код: select a.id, t.name, c.name, c.ip, a.is_online То есть таблицы как таковой нет, результат запроса находиться в QSqlQuery, и мне нужно вывести все записи(Record) из него в таблицу(на форму всмысле). setQuery пока работает как надо. Примерно так: Код:
Nidxogg, спасибо, в кьюте всего пару дней, никак не привыкну к справке) Про делегаты не слышал, спасибо Название: Re: Проблема со вставкой строки в таблицу Отправлено: afro от Июль 06, 2015, 11:31 Дабы не создавать новую тему спрошу здесь.
Как скрыть/удалить первый столбец в таблице? Дело в том, что QSqlQuerymodel создаётся дополнительная колонка(в самом начале) с номерами записей, и после сортировки таблицы они перемешиваются и в общем то выглядят не красиво и не понятно. (http://cs612624.vk.me/u72290118/docs/63483d06a863/qt.png) hideColumn(0) скрывает колонку id Возможно можно отсортировать не затрагивая этот столбец Название: Re: Проблема со вставкой строки в таблицу Отправлено: Hellraiser от Июль 06, 2015, 12:21 Получаем вертикальный заголовок (QTableView::verticalHeader) и скрываем его (QHeaderView::hide).
Название: Re: Проблема со вставкой строки в таблицу Отправлено: afro от Июль 06, 2015, 13:54 Получаем вертикальный заголовок (QTableView::verticalHeader) и скрываем его (QHeaderView::hide). Премного благодаренНазвание: Re: Проблема со вставкой строки в таблицу Отправлено: afro от Июль 07, 2015, 11:02 Не знаю законно ли это, но решил ещё один вопрос тут задать.
Вздумалось мне закрасить один столбец каждую ячейку в зависимости от её значения. Код: query = new QSqlQuery("select a.id, t.name, c.name, c.ip, a.is_online from kedr.arms a, kedr.arms_types t, kedr.computers c where a.computers_id = c.id and a.type_id = t.id;",db); Пробовал в qsqlquerymodel менять, - не вышло, пробовал в qsqlproxy - тоже не вышло Название: Re: Проблема со вставкой строки в таблицу Отправлено: Hellraiser от Июль 07, 2015, 11:59 А что, поиск по форуму уже поломался или в гугле забанили?
http://www.prog.org.ru/topic_15426_0.html (http://www.prog.org.ru/topic_15426_0.html) Название: Re: Проблема со вставкой строки в таблицу Отправлено: Nidxogg от Июль 07, 2015, 18:33 Цитировать Вздумалось мне закрасить один столбец каждую ячейку в зависимости от её значения. Можно через QStyledItemDelegate и переопределить метод paintМожно унаследоваться от QSqlQueryModel и переопределить метод data |