Рисунок Qt скрыт другим, но все еще вызывает обновление краски
Я использую Qt5.6, у меня есть QWidget
рендеринг графических объектов и когда другая графика отображается перед другими, это, кажется, вызывает обновления графики под графикой впереди.
Это создает накладные расходы, я хотел бы определить, полностью ли скрыт графический объект за графикой впереди, и если это так, то он должен прервать событие рисования.
Я думал, что это будет автоматически и сделано как часть внутренних функций Qt, но, похоже, нет.
1 ответ
Событие рисования каждого виджета происходит от композитора виджета, когда композитор определяет, что виджет должен быть перекрашен. Нет способа прервать его: если событие приходит, это означает, что виджет должен рисовать, иначе вы получите визуально неопределенные результаты.
По умолчанию виджеты могут быть прозрачными, и компоновщик виджетов должен рисовать весь стек виджетов в обратном порядке, чтобы составлять их.
Любой непрозрачный виджет должен иметь Qt::WA_OpaquePaintEvent
набор атрибутов. Это проинформирует композитора виджета о том, что любые виджеты, полностью скрытые за виджетом, не нужно рисовать. Убедитесь, что вы рисуете каждый пиксель вашего виджета!