crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QSqlRelationalTableModel и fieldIndex в дочернем классе., Почему не работает?
smartchecker
  опции профиля:
сообщение 21.5.2012, 19:29
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 83
Регистрация: 7.9.2011
Пользователь №: 2853

Спасибо сказали: 0 раз(а)




Репутация:   0  


    QSqlRelationalTableModel *modelBooks;

    modelBooks = new QSqlRelationalTableModel(this, db);
    modelBooks->setTable("books");
    modelBooks->setEditStrategy(QSqlTableModel::OnManualSubmit);

    langsIndex = modelBooks->fieldIndex("lang_id");
    modelBooks->setRelation(langsIndex, QSqlRelation("langs", "id", "language"));

Передаю в другой класс указатель modelBooks. И когда пытаюсь в другом классе вызвать, то возвращает -1. Если просто прописать индекс, то всё работает.
Где ошибся?
//    langIdx = booksModel->fieldIndex("lang_id");
//    QSqlTableModel *langModel = booksModel->relationModel(langIdx);
    QSqlTableModel *langModel = booksModel->relationModel(10);
    ui->langComboBox->setModel(langModel);
    ui->langComboBox->setModelColumn(langModel->fieldIndex("language"));
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
balbes
  опции профиля:
сообщение 8.8.2012, 12:33
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 62
Регистрация: 11.10.2007
Пользователь №: 10

Спасибо сказали: 0 раз(а)




Репутация:   0  


Где-то портится указатель?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 24.4.2017, 11:44
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


столкнулся с той же проблемой, выяснил следующее:
Есть такой код
model->setRelation(model->fieldIndex("pumpId"), QSqlRelation("flow_pumps", "id", "displayName"));
model->select();

после селекта model->fieldIndex("pumpId"), уже возвращает -1, поле "pumpId" превращается в "flow_pumps_displayName_4" (подсказал: qDebug() << "Record:" << model->record(); )

Вопрос: как же получить индекс поля по его нормальному имени ("pumpId")?

Сообщение отредактировал Litkevich Yuriy - 24.4.2017, 11:44
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.10.2020, 4:33