В данном видео на простом примере показаны возможности и ограничения класса QComboBox для редактирования таблиц с внешним ключом. Попутно затронута тема работы класса QDataWidgetMapper и адаптация пользовательской модели для работы с QComboBox.
В данном видео на простом примере показаны возможности и ограничения класса QComboBox для редактирования таблиц с внешним ключом. Попутно затронута тема работы класса QDataWidgetMapper и адаптация пользовательской модели для работы с QComboBox.
Существующий класс QComboBox можно использовать без ограничений, нужно добавить
Я использую так:
в MySQl таблицы port_params и converter_type, port_params имеет внешний ключ (5 столбец) на таблицу converter_type (на поле ID)
m_paramModel = new QSqlRelationalTableModel(this);
m_paramModel->setTable(«port_params»);
m_paramModel->setEditStrategy(QSqlTableModel::OnManualSubmit);
…
//5 — это 5-ый столбец в таблице port_params
m_paramModel->setRelation(5, QSqlRelation(«converter_type», «id», «Name»));
m_convertModel = m_paramModel->relationModel(5);
…
m_paramMapper = new QDataWidgetMapper(this);
m_paramMapper->setModel(m_paramModel);
m_paramMapper->setItemDelegate(new QSqlRelationalDelegate(this));
m_paramMapper->setSubmitPolicy(QDataWidgetMapper::AutoSubmit);
…
m_paramMapper->addMapping(ui->cbConv, 5);
…
ui->cbConv->setModel(m_convertModel);
ui->cbConv->setModelColumn(2);
при вызове метода m_paramMapper->setCurrentIndex(); значение в комбобоксе ui->cbConv сразу же изменяется на соответствующее ему в таблице port_params. При изменении значения в комбобоксе, происходят изменения в модели m_paramModel
хороший урок.
Лев, а можешь записать урок на эту тему, только если модель для QCombobox будет древовидная.
Я мудохаюсь и ничего не получается.
Заранее спасибо