Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QSqlRelationalTableModel и fieldIndex в дочернем классе.
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Модель/Представление
smartchecker
    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
Где-то портится указатель?
Litkevich Yuriy
столкнулся с той же проблемой, выяснил следующее:
Есть такой код
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")?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2020 IPS, Inc.