Russian Qt Forum
Сентябрь 30, 2024, 20:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ошибка в описании делегата  (Прочитано 2115 раз)
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);
}
Записан
Max Payne
Гость
« Ответ #1 : Май 28, 2010, 00:42 »

Через форму эта функция работает, я именно так через форму и делаю...
Чего тут не работает, или тут приоритет Role?
Записан
Max Payne
Гость
« Ответ #2 : Май 28, 2010, 00:51 »

Написал через setReadOnly, работает но проблема в том что ячейка выделяеться но не редактируеться...
Можно сделать чтоб не выделялась...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.111 секунд. Запросов: 21.