Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: qtист от Март 17, 2009, 11:58



Название: Опять о QTableWidget
Отправлено: qtист от Март 17, 2009, 11:58
Продолжаю бороться с QTableWidget  ;D
Некоторые колонки в QTableWidget определены через
QItemDelegate ( созданы QLineEdit).
В этих же колонках создаются check состояния.
Так вопрос такой: когда  check=1 надо запретить редактировать эту ячейку,
ну и наоборот.
Пробовал делать через setFlags() - так запрещается вся ячейка: и checkbox и lineedit. :'(


Название: Re: Опять о QTableWidget
Отправлено: spirit от Март 17, 2009, 12:02
в делегате проверяй, если check == 1 возвращай "0" из createEditor.


Название: Re: Опять о QTableWidget
Отправлено: qtист от Март 17, 2009, 12:13
а как достучаться из делегата до checkbox,он создаётся так:

Код
C++ (Qt)
QTableWidgetItem *item = new QTableWidgetItem;
item->setCheckState(Qt::Unchecked);


Название: Re: Опять о QTableWidget
Отправлено: spirit от Март 17, 2009, 12:21
а как достучаться из делегата до checkbox,он создаётся так:

Код
C++ (Qt)
QTableWidgetItem *item = new QTableWidgetItem;
item->setCheckState(Qt::Unchecked);
Код
C++ (Qt)
QWidget *MyDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
...
   int state = index.data(Qt::Qt::CheckStateRole).toInt();
   if (state == Qt::Unchecked)
      return 0;
...
}
 


Название: Re: Опять о QTableWidget
Отправлено: qtист от Март 17, 2009, 12:31
блин,как всё просто  ::)
spirit ,с меня стакан spirta. ;D


Название: Re: Опять о QTableWidget
Отправлено: spirit от Март 17, 2009, 12:33
блин,как всё просто  ::)
spirit ,с меня стакан spirta. ;D

гы,  ;D