Russian Qt Forum
Июнь 16, 2024, 04:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: TabWidget::cornerButton  (Прочитано 14606 раз)
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


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

GreatSnake
Багает.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #16 : Октябрь 19, 2011, 10:35 »

Чтоб было понятно, что мне не нравится в обычной кнопке - болтается как инородный элемент.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #17 : Октябрь 19, 2011, 11:58 »

А у самого QTabWidget documentMode() включен?
Записан

Qt 5.11/4.8.7 (X11/Win)
Bepec
Гость
« Ответ #18 : Октябрь 19, 2011, 12:05 »

Он кусок своего кода привел выше - там он его включает.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #19 : Октябрь 19, 2011, 12:56 »

Тогда предлагаю перегрузить только QToolButton::paintEvent():
Код
C++ (Qt)
class TabBarButton : public QToolButton
{
public:
   TabBarButton( QWidget* p ) : QToolButton( p )
   {
       setStyleSheet( "border: 0px" );
   }
   void paintEvent(QPaintEvent *e)
   {
       QPainter p(this);
 
       QStyleOptionTabBarBaseV2 opt;
       opt.init(this);
       // hardcoded document Mode
       opt.documentMode = true;
 
       int overlap = style()->pixelMetric(QStyle::PM_TabBarBaseOverlap, &opt, this);
       QRect rect;
       // hardcoded north position
       rect.setRect(0, size().height() - overlap, size().width(), overlap);
       opt.rect = rect;
 
       style()->drawPrimitive(QStyle::PE_FrameTabBarBase, &opt, &p, this);
 
       QToolButton::paintEvent( e );
   }
};
Записан

Qt 5.11/4.8.7 (X11/Win)
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #20 : Октябрь 19, 2011, 13:21 »

Строка         QToolButton::paintEvent( e ); перекроет всё предыдущее рисование. Либо отрисовка полностью кастомна, либо полностью стандартна, другого тут не дано.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #21 : Октябрь 19, 2011, 13:42 »

Строка         QToolButton::paintEvent( e ); перекроет всё предыдущее рисование. Либо отрисовка полностью кастомна, либо полностью стандартна, другого тут не дано.
А ты уже пробовал? Или заранее делаешь выводы?
Записан

Qt 5.11/4.8.7 (X11/Win)
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #22 : Октябрь 19, 2011, 13:43 »

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

Сообщений: 2921



Просмотр профиля
« Ответ #23 : Октябрь 19, 2011, 13:48 »

Пробовал
странно, т.к. setStyleSheet( "border: 0px" ) отменяет отрисовку фона кнопки в QToolButton::paintEvent().
Записан

Qt 5.11/4.8.7 (X11/Win)
Bepec
Гость
« Ответ #24 : Октябрь 19, 2011, 13:51 »

Можно сначала стандартный paintEvent запустить, а после уже свое накалякать. и спокойно прокатывает Улыбающийся
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #25 : Октябрь 19, 2011, 14:24 »

Попробовал еще раз. Либо мое рисование полностью перекрывает тулбатона, либо наоборот.
Записан
Bepec
Гость
« Ответ #26 : Октябрь 19, 2011, 15:15 »

Попытался запустить твой проект - и увы попал в несовместимость ) версию Qt и прочая спрашивать не буду - уже умаялся я креатору рот затыкать Показает язык

to Авварон - если сначала пропечатать paintEvent его, а после добавить свой, ТО... получится прорисовка ЕГО, с калякой ТВОЕЙ дополнительно. так понятнее?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



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

Попробовал еще раз. Либо мое рисование полностью перекрывает тулбатона, либо наоборот.
Да, похоже что это style-specific  Грустный
Записан

Qt 5.11/4.8.7 (X11/Win)
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #28 : Октябрь 19, 2011, 16:48 »

Bepec
Я отрисовываю кусок тулбара поверх ВСЕГО ректа кнопки - то есть всё, что было нарисовано на кнопке, стирается моей рисовалкой. Ваш способ подошел, если бы я рисовал только иконку или часть ректа.
Записан
Bepec
Гость
« Ответ #29 : Октябрь 20, 2011, 08:06 »

Глупо ожидать, что если сбросить ядерную бомбу на город, то город будет стоять.

PS а смысл тогда в вашем маляве, если вы не отрисовываете поверх, а просто заливаете участок?
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


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