Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [QT4] Рисование в widget


Автор: SwordOfDeath 21.12.2008, 22:51
Добрый день,

Немного начал разбираться в архитектуре Qt и мне нужна помощь

Задача:
Есть существующий widget например QLabel, нужно нарисовать например линию так чтобы она была внутри этого виджета.

Пока не очень себе представляю как это реализовать, возможно созданием своего виджета в котором создать QLabel и поверх QPainterPath, либо получением указателя на QPainter QLabel'a... =\

Если я запутался в класах не пинайте, я еще только начал изучать Qt...

Автор: Acer 21.12.2008, 23:04
При создании виджета в его конструктор можно передавать указатель на родительский виджет

Автор: SwordOfDeath 21.12.2008, 23:12
Пока не понимаю как вашу подсказку можно использовать =)

Автор: Acer 21.12.2008, 23:20
Линии я не рисовал, подскажу на другом примере:
Код

QWidget *wdg = new QWidget;
QLabel *lb = new QLabel( wdg ); /* wdg - parent widget */
wdg->setVisible( true );

Автор: SABROG 21.12.2008, 23:29
Если говорить конкретно о QLabel, то можно нарисовать (в памяти с помощью классов) картинку и присвоить QLabel, т.к. он умеет отображать картинки. Если говорить просто о QWidget как таковом, то унаследование и переопределение paintEvent.

Автор: SwordOfDeath 21.12.2008, 23:32
Хм... Ну скажем виджет с лебелом я получил... каким образом мне сделать что-бы QLabel принимал размер родительского виджета и по верх него была нарисована линия (0,0,maxx,maxy)...

Добавлено @ 23:34
SABROG,
Спасибо
Похоже paintEvent то что нужно, не могли бы вы мне дать небольшой исходничек... А я пока в асистанте покопаюсь...

Автор: SABROG 21.12.2008, 23:42
Аналог alClient как в дельфи - Layout to Grid. Это растяняет виджет  на всю обласать. Поищи заодно в ассистенте - Basic Drawing Example. Вообще там много примеров с переопределением painEvent.

Автор: SwordOfDeath 22.12.2008, 00:03
Спасибо буду розбиратся
Цитата

Вообще там много примеров с переопределением painEvent

painEvent объявлен в QLifeIsPain? smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)