Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Max Payne от Май 28, 2010, 00:40



Название: Ошибка в описании делегата
Отправлено: Max Payne от Май 28, 2010, 00:40
Делегирую в QTableView QLineEdit и сразу пытаюсь сделать ее не редактируемой через setEnable(false)
не могу понять почему не работает помогите разобраться....

Описание класа:
LineDelegate::LineDelegate(TypeEditor type, QObject *parent)
    : QItemDelegate(parent)
{
        typeeditor = type;
}


QWidget *LineDelegate::createEditor(QWidget *parent,const QStyleOptionViewItem &,
                                                                        const QModelIndex &) const
{
  QWidget *editor;


        switch(typeeditor)
        {
        case TLine:
                    {
                        QLineEdit *lin = new QLineEdit(parent);
                        return static_cast<QWidget *>(lin);
                    }
        }
        return editor;

}

void LineDelegate::setEditorData(QWidget *editor,
                                    const QModelIndex &index) const
{
    QVariant data = index.model()->data(index, Qt::DisplayRole);
        switch(typeeditor)
        {
        case TLine:
            {
                        QLineEdit *lin = static_cast<QLineEdit *>(editor);

                        lin->setText(data.toString());
                        lin->setEnabled(false);

                        break;
                    }
        }
}

void LineDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
                                   const QModelIndex &index) const
{
  QVariant data;
        switch(typeeditor)
        {
                case TLine:
                        QLineEdit *lin = static_cast<QLineEdit *>(editor);
                        data = lin->text();
                        break;
        }
    model->setData(index, data, Qt::EditRole);
}
void LineDelegate::updateEditorGeometry(QWidget *editor,
    const QStyleOptionViewItem &option, const QModelIndex &/* index */) const
{
    editor->setGeometry(option.rect);
}


Название: Re: Ошибка в описании делегата
Отправлено: Max Payne от Май 28, 2010, 00:42
Через форму эта функция работает, я именно так через форму и делаю...
Чего тут не работает, или тут приоритет Role?


Название: Re: Ошибка в описании делегата
Отправлено: Max Payne от Май 28, 2010, 00:51
Написал через setReadOnly, работает но проблема в том что ячейка выделяеться но не редактируеться...
Можно сделать чтоб не выделялась...