Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] QTableView: запрет редактирования колонки 
:(
    Опции темы
ShogunC
Дата 2.2.2010, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 7.8.2008
Где: Киев

Репутация: нет
Всего: нет



Извините за тупой вопрос, но потратил целы день и не смог найти решения на простой вопрос(((
Как простым способом запретить редактирование колонки в QTableView.
Вроде обыденная вещь, но простого решения не накопал  smile 
Криво косо сделать могу, но это уже принципиально для меня увидеть тривиальное и банальное решение((((

PM MAIL ICQ   Вверх
Sovereign
Дата 2.2.2010, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 7.11.2006

Репутация: 1
Всего: 4



ну дык в модели для tableWidget реализован метод 

bool setData(const QModelIndex& index,  const QVariant&    value, int nRole);
так и не давай редактировать данные, где index.column() равен нередактируемой колонке

Это сообщение отредактировал(а) Sovereign - 2.2.2010, 17:10
PM MAIL   Вверх
panukov
Дата 2.2.2010, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 8.4.2009
Где: Омск

Репутация: нет
Всего: нет



если полностью таблицу, то

Код

QTableView* tbl = new QTableView;
tbl->setEditTriggers(QAbstractItemView::NoEditTriggers);

PM MAIL   Вверх
ShogunC
Дата 2.2.2010, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 7.8.2008
Где: Киев

Репутация: нет
Всего: нет



Я это все понимаю, я знаю как запретить редактировать колонку...
Но должен быть тривиальный - самый простой способ запретить редактировать колонку, мне интересно как?????  smile 
PM MAIL ICQ   Вверх
KrupaKarlo
Дата 4.3.2010, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 10.6.2006

Репутация: нет
Всего: нет



если модель данных QStandardItemModel, то для элементов нужной колонки  задавай свойство 

void QStandardItem::setEditable ( bool editable )

Это сообщение отредактировал(а) KrupaKarlo - 4.3.2010, 09:55
PM MAIL   Вверх
AntoshaMarchenko
Дата 4.3.2010, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 22.5.2006

Репутация: нет
Всего: нет



а я переопределял mouseDoubleClickEvent и душил двойной клик, если мышь над неугодной ячейкой
PM MAIL   Вверх
fancy86
Дата 30.3.2011, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 30.3.2011

Репутация: нет
Всего: нет



Можно определить свой класс нередактируемого делегата, наследника класса QStyledItemDelegate, в котором переопределен метод createEditor() и он возвращает 0.
Пример:
Код

QWidget* NotEditableDelegate::createEditor ( QWidget*, const QStyleOptionViewItem&, const QModelIndex& ) const
{
    return 0;
}

Затем устанавливаем объект этот класса в качестве делегата для нужной нам колонки QTableView:
Код

_ui->tableView->setItemDelegateForColumn(columnNum, new NotEditableDelegate(this));

В результате, колонка QTableView, для которой установлен этот делегат, станет нередактируемой, а остальные колонки останутся редактируемые.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1362 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.