У меня в БД FireBird есть следующая таблица:
CREATE TABLE T_MSG_VC(
F_RECORD_NMB D_INTEGER NOT NULL,
F_MSG_TEXT_VC VARCHAR(1000) NOT NULL
);
Хочу ее отобразить в QTableView. Оператор должен иметь возможность просмотра таблицы, а редактирование данных должно быть запрещено.
Для этого мне, видимо, нужно создать делегат.
Посмотрите, пожалуйста, для моего случая достаточно того, что я написала?
delegate.h
#ifndef DELEGATE_H
#define DELEGATE_H
#include <QtGui/QItemDelegate>
class TextEditDelegate : public QItemDelegate
{
Q_OBJECT
public:
TextEditDelegate(QObject *parent = 0);
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
const QModelIndex &index) const;
};
#endif
delegate.cpp
#include <QtGui/QTextEdit>
#include "delegate.h"
TextEditDelegate::TextEditDelegate(QObject *parent)
: QItemDelegate(parent)
{
}
QWidget *TextEditDelegate::createEditor(QWidget *parent,
const QStyleOptionViewItem &/* option */,
const QModelIndex &/* index */) const
{
QTextEdit *editor = new QTextEdit(parent);
return editor;
}
mainwindow.cpp
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
...
tableView = new QTableView();
delegate = new TextEditDelegate();
tableView->setItemDelegateForColumn(1, delegate);
tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
...
}
...