Russian Qt Forum

Qt => Model-View (MV) => Тема начата: PavelVX от Май 19, 2011, 10:59



Название: Делегат на основе QComboBox, как вытащить значения из QSqlQueryModel?
Отправлено: PavelVX от Май 19, 2011, 10:59
Создаю свой делегат на основе QComboBox. Моделью у него является QSqlQueryModel на основе запросов типа:
"select id, name from polu"

    DelegateModel = new QSqlQueryModel;
    DelegateModel->setQuery(DelegateSQL);
    QComboBox *editor = new QComboBox(parent);
    editor->setModel(DelegateModel);
    editor->setModelColumn(1);
    editor->setEditable(true);

Входящим для него значение является id по которому он и показывет нужный элемент списка и сохраняет мне id в ответ.
Проблема возникла с переопределением метода paint.
void ComboBoxDelegateA::paint (
        QPainter *painter,
        const QStyleOptionViewItem& option,
        const QModelIndex& index ) const {
}

Из index я могу выдернуть id, но нужно показывать name!
Подскажите, пожалуйста, как мне по id быстро вытащить name для отображения на форме???


Название: Re: Делегат на основе QComboBox, как вытащить значения из QSqlQueryModel?
Отправлено: pokidoff от Июль 06, 2011, 15:43
Если сможешь найти ModelIndex айдишника (например храни хеш (int ID,QModelIndex index, ну или поиском), то можно сделать так
Код
C++ (Qt)
QString name = DelegateModel->index(index.row()/*индекс айдишника*/,1/*вторая колонка в модели*/).data().toString();