LINUX.ORG.RU

QDataWidgetMapper, QComboBox запутался с индексами.

 ,


0

2

Есть такой код

    seriesIdx = dynamic_cast<MainWindow*>(parent)->getSeriesIdx();
    QSqlTableModel *seriesModel = booksModel->relationModel(seriesIdx);
    ui->seriesComboBox->setModel(seriesModel);
    ui->seriesComboBox->setModelColumn(seriesModel->fieldIndex("series"));

    mapper = new QDataWidgetMapper(this);
    mapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit);
    mapper->setModel(booksModel);
    mapper->setItemDelegate(new QSqlRelationalDelegate(this));

    mapper->addMapping(ui->seriesComboBox, seriesIdx);
Потом запихиваю в базу
        booksModel->setData(booksModel->index(newRow, booksModel->fieldIndex("title")), ui->titleLineEdit->text());
Как из QComboBox достать правильный индекс?

список

/**
 * @brief       режим работы WDR
 */
enum xml_wdr_mode_e {
        WDR_MODE_SINGLE = 1,    /**< single slope */
        WDR_MODE_DUAL,             /**< dual slope */
        WDR_MODE_TRIPLE,           /**<triple slope */
        WDR_MODE_UNKNOW        /**< неизвесный режим WDR */
};
поместить в список
ui->wdr_mode->insertItem(WDR_MODE_SINGLE, tr("1 point"),
                                                         QVariant(WDR_MODE_SINGLE));
ui->wdr_mode->insertItem(WDR_MODE_DUAL, tr("2 point"),
                                            QVariant(WDR_MODE_DUAL));
ui->wdr_mode->insertItem(WDR_MODE_TRIPLE, tr("3 point"),
                                             QVariant(WDR_MODE_TRIPLE));
текущий выбор
void MainWindow::on_wdr_mode_currentIndexChanged(int index)
{
        switch (ui->wdr_mode->itemData(index, Qt::UserRole).toInt()) {
                case WDR_MODE_SINGLE:
                        ui->wdr_point2->setEnabled(false);
                        ui->wdr_point3->setEnabled(false);
                        ui->wdr_set_point2->setEnabled(false);
                        ui->wdr_set_point3->setEnabled(false);
                        break;
                case WDR_MODE_DUAL:
                        ui->wdr_point2->setEnabled(true);
                        ui->wdr_point3->setEnabled(false);
                        ui->wdr_set_point2->setEnabled(true);
                        ui->wdr_set_point3->setEnabled(false);
                        break;
                case WDR_MODE_TRIPLE:
                        ui->wdr_point2->setEnabled(true);
                        ui->wdr_point3->setEnabled(true);
                        ui->wdr_set_point2->setEnabled(true);
                        ui->wdr_set_point3->setEnabled(true);
                        break;
        }
}

imb ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.