crossplatform.ru

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

> QTreeWidget, Как запретить редактирование определенных столбцов?
badguy
  опции профиля:
сообщение 3.6.2009, 13:30
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 3.3.2008
Пользователь №: 111

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




Репутация:   0  


Приветствую!

Как можно запретить редактирование данных в определенных столбцах виджета?

Для редактирования нужных столбцов использую делегаты, установленные с помощью setItemDelegateForColumn(),

соответственно для item'a установлен флаг ItemisEditable. Необходимо чтобы при попытке редактирования столбцов, для которых делегаты не установлены, никакой редактор не создавался.

Можно ли как нибудь попроще реализовать такую фунциональность?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов (1 - 4)
Litkevich Yuriy
  опции профиля:
сообщение 3.6.2009, 14:08
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(badguy @ 3.6.2009, 17:30) *
Можно ли как нибудь попроще реализовать такую фунциональность?
вот было такое обсуждение, ничем пока не кончилось
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 3.6.2009, 14:50
Сообщение #3


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


badguy, поставь делегат для всей таблици. В createEditor делай проверку, какой столбец редактируется. Если этот столбец редактироваться не должен, не создавай редактор.
QWidget *SpinBoxDelegate::createEditor(QWidget *parent,
    const QStyleOptionViewItem &/* option */,
    const QModelIndex & index ) const
{    
    if (index.column() == 0) {
        return 0;
    }    
    ...
    ...
    return editor;
}



Для дерева ничего не изменится )))

Сообщение отредактировал igor_bogomolov - 3.6.2009, 15:21
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 4.6.2009, 11:55
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

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




Репутация:   11  


Задавать флаги для отдельныйх столбцов возможно. Через index.column() можно получить номер столбца.
Вот работающий пример, правда на python-е.
def flags(self, index):
    if not index.isValid():
        return QtCore.Qt.ItemIsEnabled

    res = QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable
    if (index.column() == 1 or index.column() == 2):
        res = res | QtCore.Qt.ItemIsEditable
        
    return res


Похоже я невнимательно прочитал, вопрос был про widget-ы, а это для модели.

Сообщение отредактировал Sokoloff - 4.6.2009, 12:03
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_brus_*
сообщение 6.2.2010, 2:19
Сообщение #5





Гости








    


Можно и без моделей. Простой пример:
for (int row = 0; row < 10; ++row)
{
QTableWidgetItem *item1 = new QTableWidgetItem("Hello");
item1->setFlags(Qt::ItemIsDragEnabled|Qt::ItemIsUserCheckable|Qt::ItemIsEnabled);// Не редактируемые ячейки
tableWidget_GenesCombinations->setItem(row,0,item1);
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 2.12.2024, 7:56