Russian Qt Forum
Ноябрь 24, 2024, 12:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с редактированием таблиц в tableView  (Прочитано 5185 раз)
phill13
Гость
« : Май 29, 2010, 16:57 »

Добрый день , пожалуйста подскажите.

Я создаю модель и переношу в tableView и собственно включая опцию setEditStrategy. Аномалии начинаются когда начинаю редактировать базу в tableView, она почему-то не сохраняет изменения тоесть остается такой какой была. В чем может быть косяк?



QSqlTableModel *model = new QSqlTableModel;
    model->setTable("c_curator");
    model->setEditStrategy(QSqlTableModel::OnFieldChange);
    model->select();
    model->setHeaderData(1, Qt::Horizontal, QObject::tr("Фамилия"));
    model->setHeaderData(2, Qt::Horizontal, QObject::tr("Имя"));
    model->setHeaderData(3, Qt::Horizontal, QObject::tr("Отчество"));
    model->setHeaderData(4, Qt::Horizontal, QObject::tr("Телефон"));

    ui->tableView->setModel(model);

    ui->tableView->setColumnHidden(0,true);
    ui->tableView->setAlternatingRowColors(true);

Извеняюсь, если тема уже подымалась.
« Последнее редактирование: Май 29, 2010, 18:20 от phill13 » Записан
shirushizo
Гость
« Ответ #1 : Май 29, 2010, 21:50 »

Установить делегата неплохо было бы
void QAbstractItemView::setItemDelegate ( QAbstractItemDelegate * delegate )
или
void QAbstractItemView::setItemDelegateForColumn ( int column, QAbstractItemDelegate * delegate )
или
void QAbstractItemView::setItemDelegateForRow ( int row, QAbstractItemDelegate * delegate )
Записан
phill13
Гость
« Ответ #2 : Май 29, 2010, 22:10 »

А по подробней можно, а то совсем с делегатами не дружу. Как бы это выглядело применимо к моему коду?
И вопрос остается открытым, редактирование не происходит только из за отсутствия делегатов?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Май 29, 2010, 22:21 »

делегат тут точно не причём.
Сама таблица отображается в представлении корректно?
Не является ли "c_curator" представлением?
« Последнее редактирование: Май 29, 2010, 22:23 от lit-uriy » Записан

Юра.
phill13
Гость
« Ответ #4 : Май 29, 2010, 22:28 »

Все отображается коректно.
Даже  больше она работала нормально, но при переносе на другой компьютер базы и программы(перенос базы выполняется экспортом в phpmyadmin СУДБ mysql). Заново компиля начинаются такие глюки причем со всеми таблицами.

« Последнее редактирование: Май 29, 2010, 22:49 от phill13 » Записан
crossly
Гость
« Ответ #5 : Май 31, 2010, 14:04 »

sql самой таблицы посмотреть можно??
Записан
trenkinan
Гость
« Ответ #6 : Июнь 01, 2010, 13:04 »

Попробуй использовать
Код
C++ (Qt)
   model->setEditStrategy(QSqlTableModel::OnRowChange);
ну и интересно было бы посмотреть на саму таблицу SQL
Записан
phill13
Гость
« Ответ #7 : Июнь 01, 2010, 20:01 »

Сделал тоже самое на sqlite, все работает стабильно, никаких отклонений ненаблюдаю.

Kod_curator   - ключ
Surname
Name
Patronymic
Phone


CREATE TABLE [student_book] (
[Kod_curator] VARCHAR(50)  NOT NULL PRIMARY KEY,
[Surname] VARCHAR(50)  NOT NULL,
[Name] VARCHAR(50)  NOT NULL,
[Patronymic] VARCHAR(50)  NOT NULL,
[Phone] VARCHAR(50)  NOT NULL
);
« Последнее редактирование: Июнь 02, 2010, 10:27 от phill13 » Записан
crossly
Гость
« Ответ #8 : Июнь 02, 2010, 12:37 »

я бы для Not null добавил значения по умолчанию .... по крайней мере при использовании OnFieldChange
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.068 секунд. Запросов: 23.