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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: drawControl + QStyle  (Прочитано 6946 раз)
andrew.k
Гость
« : Апрель 16, 2012, 20:13 »

Делаю делегат для вьюхи.
Мне нужно отрисовать кнопку. Но отрисовать ее нужно текущим стилем.
Что-то не выходит.

Вот код, рисующий кнопку.
Код
C++ (Qt)
   // Draw remove button
   QRect buttonRect = getButtonRect(rect);
   QStyleOptionButton button;
   button.initFrom(widget);
   button.rect = buttonRect;
   button.text = "X";
   button.state = removeButtonState_ | QStyle::State_Enabled;
   style->drawControl(QStyle::CE_PushButton, &button, painter);

Не пойму, как корректно заполучить QStyleOptionButton.

Ведь внутри метода paint(QPainter *painter, const QStyleOptionViewItem &option,...
имеем QStyleOptionViewItem

Кнопка рисуется без стиля.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Апрель 16, 2012, 20:25 »

Похоже, что не получится, т.к. для QSS требуется наличие QPushButton виджета.
Вот здесь аналогичная проблема.

Но можно попробовать создать "спрятанный" QPushButton и отрисовывать его через QWidget::render().
« Последнее редактирование: Апрель 16, 2012, 20:44 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
andrew.k
Гость
« Ответ #2 : Апрель 16, 2012, 21:40 »

Но можно попробовать создать "спрятанный" QPushButton и отрисовывать его через QWidget::render().
Да, уже пришла такая мысль, как попробую, отпишу.
Записан
andrew.k
Гость
« Ответ #3 : Апрель 17, 2012, 20:14 »

Спрятанный виджет вроде как не сработал.
Но отрисовать кнопку мне удалось.
Правда не удалось повторить ситуацию в отдельном тестовом проекте  Непонимающий
Записан
andrew.k
Гость
« Ответ #4 : Апрель 17, 2012, 20:16 »

Второй непонятный мне глюк.

Код
C++ (Qt)
virtual void paint(QPainter *painter, const QStyleOptionViewItem &option,
                      const QModelIndex &index) const;
и
virtual bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option,
                            const QModelIndex &index);
В этих обработчиках получаю разный размер option.rect?
Почему так???
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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