Название: QStyldeItemDelegate (CheckBox, cell hovered) Отправлено: stima от Ноября 15, 2011, 17:54 Есть QTableWidget. В ней есть:
чекбокс | колонка1 | колнка2 | колонка3 Я выставлял image чекбокса как: QTableView::indicator { image: url(:/images/checkbox.png); } QTableWidget::indicator:checked { image: url(:/images/checkbox checked.png); } Но решил написать свой делегат, чтобы убрать фокус с itema, а также при hovere мышкой подсвечивать всю строку. При этом данный css не пашет. Мой делегат: void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { QStyleOptionViewItem newOption(option); QBrush background = painter->background(); int row = index.row(); if ( option.state & QStyle::State_MouseOver ) { background = QColor(72, 72, 72); emit cellHovered(row, background); } else { emit cellHovered(row, background); } if ( option.state & QStyle::State_HasFocus ) newOption.state ^= QStyle::State_HasFocus; QStyledItemDelegate::paint(painter, newOption, index); } как вернуть картинку на checkbox и еще ховер мышкой срабатывает только когда идет выделение itema, как это решить? Название: Re: QStyldeItemDelegate (CheckBox, cell hovered) Отправлено: GreatSnake от Ноября 15, 2011, 19:39 Поменяй
Код на Код
Название: Re: QStyldeItemDelegate (CheckBox, cell hovered) Отправлено: stima от Ноября 15, 2011, 20:51 Спасибо помогло. Но как правильно сделать ховер?)
Название: Re: QStyldeItemDelegate (CheckBox, cell hovered) Отправлено: asvil от Ноября 15, 2011, 23:02 Для ховера всей строки нужно модифицировать вью. setMouseTracking, mouse move event и selectionModel()->selectRow
Название: Re: QStyldeItemDelegate (CheckBox, cell hovered) Отправлено: stima от Ноября 16, 2011, 12:43 Про ховер не совсем понял.
selectionModel()->selectRow вернет индекс на выбранные строки, но зачем мне выбранные строки? и в mouse move event ловить эти строки? и ставить другой бекграунд? |