| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > рисование на виджете |
| Автор: gordmiand 25.5.2010, 20:07 | ||||
рисую эллипс (окружность) прямо на форме:
все замечательно, естесственно, рисуется... а как мне его нарисовать, допустим, на виджете my_Label типа QLabel, расположенном, конечно же, на этой же форме??? В вышеприведенном коде пробую задать
но он мне пишет QPainter::begin: Widget painting can only begin as a result of a paintEvent QPainter::setPen: Painter not active QPainter::setBrush: Painter not active как будет правильно отрисовать окружность на лейбле? |
| Автор: SABROG 25.5.2010, 20:41 |
| Рисуй на QPixmap и потом ставь его в QLabel. Можно конечно унаследоваться от QLabel и переопределить paintEvent() метод, или установить фильтр событий (installEventFilter) и рисовать в нем, но какой смысл перекрывать отрисовку для QLabel'a? Разве что нарисовать что-то поверх того, что он уже нарисовал. |
| Автор: gordmiand 26.5.2010, 20:25 | ||
что-то не выходит...как будет правильно? |
| Автор: SABROG 26.5.2010, 21:38 | ||
![]() |
| Автор: gordmiand 26.5.2010, 22:00 |
| SABROG: что-то я все равно не понял - стоко всего только для вывода одной надписи Russiian Federation.... подправьте пож-та мой примерчик с окружностью - так будет понятнее что я не так делаю при работе с этим пиксмапом... |
| Автор: SABROG 26.5.2010, 22:28 | ||||||||
Обязательно нужно задать размер pixmap'a
Иначе будет null pixmap
И обязательно делать очистку, так как класс QPixmap создается над областью памяти, которую никак не инициализирует, следовательно там может быть всякий мусор, проявляющий себя в качестве артефактов на итоговом изображении.
Завершить рисование прежде чем делать что-либо с картинкой, чтобы QPainter "освободил" ресурс
|