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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отрисовка QWidget в QPixmap  (Прочитано 5507 раз)
jasf
Гость
« : Октябрь 26, 2009, 16:46 »

Здравствуйте. Подскажите пожалуйста, как отрисовывать содержимое QWidget в QPixmap без применения QGraphicsView. Например хочеться иметь доступ к QMainWindow.. т.е. что бы QMainWindow рисовало всё в отдельный QPainter (QPixmap), который потом руками мог бы выводиться на экран.. спасибо.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Октябрь 26, 2009, 16:56 »

Несовсем понятно что нужно, но глянь вот это:

QPixmap::grabWidget
QWidget::render
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
jasf
Гость
« Ответ #2 : Октябрь 26, 2009, 17:10 »

Да. Спасибо. Именно это и нужно было Улыбающийся но.. с небольшим изменением. Хотелось бы, что бы в данный QPixmap виджет отрисовывался всегда(при любом update() любого из чилдовских виджетов). т.е., по всей видимости, мне нужно перехватить некий глобальный paintEvent.. ну т.е. чтобы вся отрисовка или любой update() виджета проходила через QPixmap, который (имею ввиду QPixmap) потом отрисовывался бы в системный QPainter.
т.е. хочеться, что бы отрисовка виджетов в окне проходила через QPixmap Улыбающийся
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


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

Да. Спасибо. Именно это и нужно было Улыбающийся но.. с небольшим изменением. Хотелось бы, что бы в данный QPixmap виджет отрисовывался всегда(при любом update() любого из чилдовских виджетов). т.е., по всей видимости, мне нужно перехватить некий глобальный paintEvent.. ну т.е. чтобы вся отрисовка или любой update() виджета проходила через QPixmap, который (имею ввиду QPixmap) потом отрисовывался бы в системный QPainter.
т.е. хочеться, что бы отрисовка виджетов в окне проходила через QPixmap Улыбающийся

используй глобальный фильтр событий.

Цитировать
bool QCoreApplication::notify ( QObject * receiver, QEvent * event )   [virtual]

Sends event to receiver: receiver->event(event). Returns the value that is returned from the receiver's event handler. Note that this function is called for all events send to any object is all threads.

For certain types of events (e.g. mouse and key events), the event will be propagated to the receiver's parent and so on up to the top-level object if the receiver is not interested in the event (i.e., it returns false).

There are five different ways that events can be processed; reimplementing this virtual function is just one of them. All five approaches are listed below:

  • Reimplementing paintEvent(), mousePressEvent() and so on. This is the commonest, easiest and least powerful way.
  • Reimplementing this function. This is very powerful, providing complete control; but only one subclass can be active at a time.
  • Installing an event filter on QCoreApplication::instance(). Such an event filter is able to process all events for all widgets, so it's just as powerful as reimplementing notify(); furthermore, it's possible to have more than one application-global event filter. Global event filters even see mouse events for disabled widgets. Note that application event filters are only called for objects that live in the main thread.
  • Reimplementing QObject::event() (as QWidget does). If you do this you get Tab key presses, and you get to see the events before any widget-specific event filters.
  • Installing an event filter on the object. Such an event filter gets all the events, including Tab and Shift+Tab key press events, as long as they do not change the focus widget.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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