crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> создание делегата для QTableView на основе QTextEdit
Steklova Olga
  опции профиля:
сообщение 2.4.2012, 15:21
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 27.9.2011
Из: Санкт-Петербург
Пользователь №: 2912

Спасибо сказали: 5 раз(а)




Репутация:   4  


Всем привет! :)
У меня в БД 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);
    ...
}
...
Пока не говорю о размерах ячеек QTableView. Об этом позже... :)


Сообщение отредактировал Steklova Olga - 2.4.2012, 15:29
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Steklova Olga
  опции профиля:
сообщение 4.4.2012, 12:21
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 27.9.2011
Из: Санкт-Петербург
Пользователь №: 2912

Спасибо сказали: 5 раз(а)




Репутация:   4  


И все же, если я остановлюсь на использовании моего делегата, простого до крайности, то вот этого достаточно?
QWidget *TextEditDelegate::createEditor(QWidget *parent,
    const QStyleOptionViewItem &/* option */,
    const QModelIndex &/* index */) const
{
    QTextEdit *editor = new QTextEdit(parent);
    return editor;
}

Цитата
если сделаешь свою модель, то свой делегат вообще не нужно делать, если, конечно, он не специфический.
И как мне без использования делегата указать в модели, что при ее отображении в QTableView надо будет использовать QTextEdit?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.11.2024, 10:28