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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Индикатор "Drawing Objects"  (Прочитано 2386 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Апрель 05, 2022, 13:33 »

Добрый день

По каким-то причинам окно индикатора не показывается, а если было показано "до того" - не обновляется. Сама операция - рисование OpenGL (стандартно, через paintGL), как говорят, "по идее" такой проблемы быть не должно. Заграбастал буфер окна в файл (через QBackingStore) там все норм, обновлено. А вот на экране - тишина.

По ходу дела вопрос: ну вот сделали Qevent::UpdateRequest, он позвал Paint(ы), буфер готов, кто (или как, или в какой момент) его шлепает на экран? (хотя бы на OSX)

Спасибо
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 861


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #1 : Апрель 05, 2022, 20:38 »

Может, QApplication::processEvents() ?
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4724



Просмотр профиля WWW
« Ответ #2 : Апрель 05, 2022, 23:22 »

в cocoa нативный способ заставить вью перерисоваться — послать ему -setNeedsDisplay, что в свою очередь вызовет -drawInRect:
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Апрель 06, 2022, 12:59 »

Может, QApplication::processEvents() ?
Так и делаю, другого просто нет. Потом отслеживаю приходящие события. Все одинаково - вызывается UpdateRequest, из него Paint(ы), создается верный буфер. Но при обновлении из paintGL - экран не обновлен. Долго ползал в хвосте UpdateRequest, где зовутся ф-ции типа flush - тоже все одинаково.

в cocoa нативный способ заставить вью перерисоваться — послать ему -setNeedsDisplay, что в свою очередь вызовет -drawInRect:
Ну это вызов Paint, т.е. кода рисования, эта фаза проходит
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Апрель 07, 2022, 11:05 »

Продолжаю копаться. Собсно обновление (что становится видным на экране) происходит "в недрах", см аттач. Понял так это системное событие OSX недоступное из Qt напрямую. Поэтому в Qt+OSX я никак не могу "чего-то вызвать" - и экран обновлен, обязательно нужен processEvents. Ну и шо делать?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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