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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос по SqlRelationalTableModel  (Прочитано 5296 раз)
nata267
Гость
« : Декабрь 16, 2010, 16:46 »

Я использую SqlRelationalTableModel+QTableView. По кнопке "добавить" формы у меня такой слот срабатывает:
Код:
    int row = model->rowCount();
    int id = model->rowCount()==0 ? 1 : model->record(model->rowCount()-1).value("id").toInt()+1;
    model->insertRows(row,1);
    model->setData(model->index(row,0),id);
    model->setData(model->index(row,2),4);

строки добавляются но пустые, почему???
мне не надо сразу в базу заносить и я не вызываю

Код:
    model->submitAll();
    model->select();
Записан
crossly
Гость
« Ответ #1 : Декабрь 16, 2010, 16:59 »

DDL для таблиц покажите
Записан
nata267
Гость
« Ответ #2 : Декабрь 16, 2010, 18:44 »

CREATE TABLE `recipes_ingredients` ("
  "`id` INTEGER PRIMARY KEY AUTOINCREMENT,"
  "`recipe_id` integer default NULL,"
  "`quantity` integer default NULL,"
  "`unit_id` integer default NULL,"
  "`ingredient_id` integer default NULL"
");
« Последнее редактирование: Декабрь 17, 2010, 09:28 от nata267 » Записан
crossly
Гость
« Ответ #3 : Декабрь 16, 2010, 19:26 »

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

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Декабрь 16, 2010, 19:49 »

>>мне не надо сразу в базу заносить и я не вызываю
а политику правильно установил?
Записан

Юра.
nata267
Гость
« Ответ #5 : Декабрь 17, 2010, 09:27 »

model->setEditStrategy(QSqlTableModel::OnManualSubmit);

и когда в таблице пытаюсь редактировать то же самое - ячейки после редактирования пустые становятся
« Последнее редактирование: Декабрь 17, 2010, 09:31 от nata267 » Записан
browncoat
Гость
« Ответ #6 : Декабрь 17, 2010, 09:42 »

Столбец id это же AUTOINCREMENT, а Вы его значения вручную задаете?
И select() же не вносит данные в БД ( http://www.doc.crossplatform.ru/qt/4.7.x/qsqltablemodel.html#select ).
« Последнее редактирование: Декабрь 17, 2010, 09:45 от browncoat » Записан
nata267
Гость
« Ответ #7 : Декабрь 17, 2010, 09:43 »

спасибо, я нашла косяк, он был вот в чем:

Код:
class RecipeIngredientsModel : public QSqlRelationalTableModel {

    Q_OBJECT
public:
    RecipeIngredientsModel(QObject *parent = 0):
                QSqlRelationalTableModel(parent)
    {}
    QVariant data(const QModelIndex &index,
                   int role = Qt::DisplayRole) const
    {
        QVariant value =QSqlQueryModel::data(index, role);
        switch (role) {
            case Qt::SizeHintRole:  // Размер ячейки
                return QSize(300, 10);
        }
        return value;
    }
};

QVariant value =QSqlQueryModel::data(index, role);
а нужно
QVariant value =QSqlRelationalTableModel::data(index, role);
« Последнее редактирование: Декабрь 17, 2010, 11:19 от nata267 » Записан
nata267
Гость
« Ответ #8 : Декабрь 17, 2010, 10:40 »

теперь другие косяки появились:
1/ при удалении строк они с экрана не удаляются а только отмечаются !
2/ при добавлении вместо номера строки *
скажите, это возможно исправить??

Записан
nata267
Гость
« Ответ #9 : Декабрь 17, 2010, 11:34 »

удаленную строку можно скрыть
view->setRowHidden(row, true);
а от * наверно никуда не дется
Записан
browncoat
Гость
« Ответ #10 : Декабрь 22, 2010, 09:51 »

а от * наверно никуда не дется
Значения этого столбца можно изменить через setHeaderData(), установив ориентацию Qt::Vertical.
Записан
nata267
Гость
« Ответ #11 : Декабрь 22, 2010, 10:28 »

а от * наверно никуда не дется
Значения этого столбца можно изменить через setHeaderData(), установив ориентацию Qt::Vertical.


пробовала, не помогло, я просто скрываю: m_ui.tableView->verticalHeader()->hide();
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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