Russian Qt Forum

Qt => Model-View (MV) => Тема начата: linuxoid от Август 20, 2007, 14:42



Название: как сделать делегатом QComboBox???<<Qt4.2.3
Отправлено: linuxoid от Август 20, 2007, 14:42
Как сделать делегатом QComboBox в QTableView? ??? :o


Название: Re: как сделать делегатом QComboBox???<<Qt4.2.3
Отправлено: crossly от Август 20, 2007, 14:49
Как сделать делегатом QComboBox в QTableView? ??? :o
загляни в examples.... или книжечку Бланшета....


Название: Re: как сделать делегатом QComboBox???<<Qt4.2.3
Отправлено: linuxoid от Август 20, 2007, 14:53
ну ты и помог..


Название: Re: как сделать делегатом QComboBox???<<Qt4.2.3
Отправлено: denka от Август 20, 2007, 15:20
Внимательно читаеш раздел Model/View Programming в Assistant'e: в частности про модели, отображения и делегаты... Смотриш пример examples\itemviews\spinboxdelegate.

з.ы. я бы на твоем месте это бы давно сделал, а то у тя постов на эту тему уже с десяток, а знаний как смотрю не прибавилось  :(  ???


Название: Re: как сделать делегатом QComboBox???<<Qt4.2.3
Отправлено: crossly от Август 20, 2007, 15:34
а чем тебе ещё помочь..... взгляни на QRelationalTableModel (я так понимаю тебе это нужно)... ну а если нет то смотри QSpinBoxDelegate...


Название: Re: как сделать делегатом QComboBox???<<Qt4.2.3
Отправлено: linuxoid от Август 21, 2007, 10:19
 :-[ помогите засунуть делегата в ячейки плз!чё я не правильно делаю?

MyDelegate::MyDelegate(
QSqlQueryModel model,
QObject *parent)
                : QItemDelegate(parent),
                mod(model)
                  {    }

   
   QWidget *MyDelegate::createEditor(
               QWidget *parent,
               const QStyleOptionViewItem& /* option */,
               const QModelIndex& /* index */) const {
       QComboBox *editor = new QComboBox(parent);
       editor->setModel(mod);
       editor->installEventFilter(const_cast<MyDelegate*>(this));
       return editor;
   }
   
   void MyDelegate::setEditorData(
                   QWidget *editor,
                   const QModelIndex &index) const {
       QString value = index.model()->data(
               index, Qt::EditRole).toInt();
       QComboBox *ds = static_cast<QComboBox*>(editor);
       ds->setCurrentText(value);
   }
   
   void MyDelegate::setModelData(
               QWidget *editor,
               QAbstractItemModel *model,
               const QModelIndex& index) const {
       QComboBox *ds = static_cast<QComboBox*>(editor);
       ds->interpretText();
       QString value = ds->currentText();
       stroka = ds->currentText();
       model->setData(index, value);
   }
   
   void MyDelegate::updateEditorGeometry(
               QWidget *editor,
               const QStyleOptionViewItem &option,
               const QModelIndex& /* index */) const {
       editor->setGeometry(option.rect);
   }


Название: Re: как сделать делегатом QComboBox???<<Qt4.2.3
Отправлено: linuxoid от Август 21, 2007, 10:41
Всё получилось!спасибо! 8)