Russian Qt Forum

Qt => Базы данных => Тема начата: demaker от Август 24, 2016, 11:16



Название: QSqlQuery работа запроса в QItemDelegate
Отправлено: demaker от Август 24, 2016, 11:16
Пытаюсь через делегат послать запрос таблице для заполнения ComboBox-а данными из запроса
Код
C++ (Qt)
ComboBoxDelegate::ComboBoxDelegate(QObject *parent):
   QItemDelegate(parent)
{
}
 
ComboBoxDelegate::~ComboBoxDelegate()
{
}
 
QWidget *ComboBoxDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
   if(index.column() == 0 || index.column() == 1){
       QComboBox *cb = new QComboBox(parent);
       return cb;
   }
}
 
void ComboBoxDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
{
    if(index.column() == 0 || index.column() == 1){
        QComboBox *cb = static_cast<QComboBox* >(editor);
 
        //послать запрос для забора возможных данных, чтобы делать выбора
        //чтобы ее заполнить типа как внизу
        //cb->addItem("jhjkh");
        //cb->addItem("kljkj");
 
        QSqlQuery query;
        qDebug()<<query.exec("SELECT * FROM TEZ_DEVICESTYPES");
        qDebug()<<query.record();
    }
 
}
 
void ComboBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
{
    if(index.column() == 0 || index.column() == 1){
        QComboBox *cb = static_cast<QComboBox* >(editor);
        QString str = cb->currentText();
        model->setData(index,str,Qt::EditRole);
   }
}
 
Сам запрос выполняется.
И в консоль выводится
Код:
true 
QSqlRecord( 2 )
 " 0:" QSqlField("TDEVICE_CODE", int, length: 2, precision: 0, required: yes, generated: yes, typeID: 500) ""
 " 1:" QSqlField("TEZ_CODE", int, length: 2, precision: 0, required: yes, generated: yes, typeID: 500) ""

Скажите как мне достать все данные из нужной мне колонке, чтобы заполнить ComboBox.


Название: Re: QSqlQuery работа запроса в QItemDelegate
Отправлено: demaker от Август 25, 2016, 09:56
Разобрался  :) спасибо