Альтернативы рисования qpainter (производительность - отстой на Mac)

У меня есть класс, который отображает данные формы волны аудиофайлов в QWidget (см. Снимок экрана виджета ниже, тогда я все еще использовал градиент, что привело к снижению производительности).

Аудиоданные отрисовываются в paintEvent непосредственно на виджете с использованием нескольких вызовов QPainter :: drawLine (минимальное количество вызовов QWidget :: drawLine эквивалентно ширина виджета => минимум одна строка для каждой координаты x). Хотя этот подход довольно хорошо работает в Windows (событие paintEvent в полноэкранном режиме занимает около 4 мсек), производительность в 4-5 раз хуже, когда программа запускается под MacOS.

Производительность рисования важна для плавной прокрутки экрана. отображаемые данные.

Итак, мой вопрос: знает ли кто-нибудь более быструю альтернативу QPainter.drawLine для рисования линий (решения, зависящие от платформы, могут подойти, если их можно использовать в paintEvent), или есть способ ускорить прокрутку, какую-то буферизацию и т. д.?

old screenshot of the widget (still used gradients, which caused poor performance)

8
задан Gabe 22 May 2011 в 18:19
поделиться