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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
wiz29
  опции профиля:
сообщение 4.4.2012, 15:51
Сообщение #2


Старейший участник
****

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

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




Репутация:   12  


Если внутри QVariant будет строка то фабрика по умолчанию создаст делегат для строк как QLineEdit.

см. тут
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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




RSS Текстовая версия Сейчас: 29.11.2024, 21:15