Russian Qt Forum

Qt => Model-View (MV) => Тема начата: dimetcm от Май 21, 2010, 16:03



Название: QSpinBox в QTableView
Отправлено: dimetcm от Май 21, 2010, 16:03
Подскажите нубу.

Есть таблица QTableView, в ячейках этой таблицы должны быть QSpinBox.
Наследовался от QStyledItemDelegate. Перегрузил методы createEditor и paint.
Вот код paint
Код:
	
void paint ( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const
{
QStyledItemDelegate::paint(painter, option, index);
QStyleOptionSpinBox spinbox;
spinbox.rect = option.rect;
QApplication::style()->drawComplexControl(QStyle::CC_SpinBox , &spinbox, painter);
}
Все хорошо, но есть несколько проблем:
1. QSpinBox выглядит не активным
2. Для редактирования нужно делать двойной клик (хотелось бы сразу).
3. При двойном щелчке значение становится равным 0 (хотелось что бы оставалось предыдущее значение)

Заранее благодарен.


Название: Re: QSpinBox в QTableView
Отправлено: crossly от Май 21, 2010, 16:27
1.
Код:
QPalette QStyleOption::palette
2.
Код:
void QAbstractItemView::mousePressEvent ( QMouseEvent * event )   [virtual protected]
3.
Код:
void QItemDelegate::setEditorData ( QWidget * editor, const QModelIndex & index ) const   [virtual]


Название: Re: QSpinBox в QTableView
Отправлено: Kolobok от Май 21, 2010, 16:44
В QItemDelegate для целых чисел и так создается QSpinBox.


Название: Re: QSpinBox в QTableView
Отправлено: dimetcm от Май 21, 2010, 16:47
В QItemDelegate для целых чисел и так создается QSpinBox.
Я хотел что бы он выглядел как SpinBox даже когда его не редактируют


Название: Re: QSpinBox в QTableView
Отправлено: dimetcm от Май 21, 2010, 16:51
1.
Код:
QPalette QStyleOption::palette
вставил
Код:
spinbox.palette.setCurrentColorGroup(QPalette::Active);
ничего не произошло


Название: Re: QSpinBox в QTableView
Отправлено: lit-uriy от Май 21, 2010, 18:17
dimetcm, для работы в один клик переопредели в делегате метод editorEvent
Ссылки по теме редактирования в один щелчёк:
  • Переход в режим редактирования по одиночному нажатию баз выделения ячейки (http://www.prog.org.ru/index.php?topic=11696.msg72528#msg72528)
  • QTableView и QCheckBox (http://www.prog.org.ru/index.php?topic=10428.msg68031#msg68031)