Russian Qt Forum
Сентябрь 30, 2024, 14:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QStyldeItemDelegate (CheckBox, cell hovered)  (Прочитано 3048 раз)
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, как это решить?
« Последнее редактирование: Ноябрь 15, 2011, 17:57 от stima » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Ноябрь 15, 2011, 19:39 »

Поменяй
Код
C++ (Qt)
QStyleOptionViewItem newOption(option);
на
Код
C++ (Qt)
QStyleOptionViewItemV4 newOption(option);
Записан

Qt 5.11/4.8.7 (X11/Win)
stima
Гость
« Ответ #2 : Ноябрь 15, 2011, 20:51 »

Спасибо помогло. Но как правильно сделать ховер?)
Записан
asvil
Гость
« Ответ #3 : Ноябрь 15, 2011, 23:02 »

Для ховера всей строки нужно модифицировать вью. setMouseTracking, mouse move event и selectionModel()->selectRow
Записан
stima
Гость
« Ответ #4 : Ноябрь 16, 2011, 12:43 »

Про ховер не совсем понял.

selectionModel()->selectRow вернет индекс на выбранные строки, но зачем мне выбранные строки?
и в mouse move event ловить эти строки? и ставить другой бекграунд?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.118 секунд. Запросов: 22.