Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Модель/Представление _ QSqlRelationalTableModel и fieldIndex в дочернем классе.

Автор: smartchecker 21.5.2012, 19:29

    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

Где-то портится указатель?

Автор: Litkevich Yuriy 24.4.2017, 11:44

столкнулся с той же проблемой, выяснил следующее:
Есть такой код

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")?

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)