Простой вопрос вроде но никак не могу разорбратся с делегатом.
Есть tableview, QSqlQueryModel
Необходимо сделать так чтобы человек мог редактировать ячейку в вьювке
добавил в проект класс делегата
в заголовочном
#ifndef LINEEDITDELEGATE_H
#define LINEEDITDELEGATE_H
#include <QObject>
#include <QItemDelegate>
class LineEditDelegate : public QItemDelegate
{
Q_OBJECT
public:
LineEditDelegate(QObject *parent = 0);
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
const QModelIndex &index) const;
void setEditorData(QWidget *editor, const QModelIndex &index) const;
void setModelData(QWidget *editor, QAbstractItemModel *model,
const QModelIndex &index) const;
};
#endif // LINEEDITDELEGATE_H
в исходнике делегата
#include "lineeditdelegate.h"
#include <QItemDelegate>
#include <QLineEdit>
LineEditDelegate::LineEditDelegate(QObject *parent)
:QItemDelegate(parent)
{
}
QWidget *LineEditDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QLineEdit *editor = new QLineEdit(parent);
return editor;
}
void LineEditDelegate::setEditorData(QWidget *editor,
const QModelIndex &index) const
{
QString value = index.model()->data(index, Qt::EditRole).toString();
QLineEdit *lineEdit = static_cast<QLineEdit*>(editor);
lineEdit->setText(value);
}
void LineEditDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
const QModelIndex &index) const
{
QLineEdit *lineEdit = static_cast<QLineEdit*>(editor);
QString value = lineEdit->text();
model->setData(index, value, Qt::EditRole);
}
в исходниках где лежит вьювка добавил код в событие по клику
LineEditDelegate *delPerson = new LineEditDelegate (ui->tableView_3);
ui->tableView_3->setItemDelegate(delPerson);
Не работает. Прочитал бланшета посмотрел примеры но никак реализовать это не могу