Qt — Как обойти ограничение максимального размера QScroller (16777215 пикселей)

Я работаю над приложением Qt, в котором пользователь имеет возможность проверять звуковую форму. Учитывая типичную дискретизированную волну 44,1 кГц, требование, чтобы форма волны была масштабируемой по крайней мере до 10 пикселей на выборку, и максимальная ширина QWidget, это ограничивает мою форму волны длиной 38 секунд (16777215/44100/10). Но в моем приложении форма волны может превышать 10 минут.

Теперь очевидно, что пользователь никогда не сможет просматривать всю форму волны на одном дисплее, когда будет увеличен масштаб. Вот почему я поместил его в (горизонтальный) QScrollArea. Виджет формы волны имеет пользовательское событие рисования, которое позволяет ему выборочно отображать видимую часть на экране, поэтому он способен обрабатывать любую теоретическую ширину. Но QScrollArea возражает против таких размеров.

Итак, как мне сделать скроллер, который может обрабатывать большие размеры?


Вот изображение моего приложения, чтобы помочь вам визуализировать проблему (обратите внимание, что форма сигнала должна быть пиксельной, как это происходит):

увеличенный сигнал

Вот точное сообщение об ошибке, которое я получаю при звонке setFixedSize на моем виджете:

QWidget::setMinimumSize: (/ui::SamplerView) The largest allowed size is (16777215,16777215)
QWidget::setMaximumSize: (/ui::SamplerView) The largest allowed size is (16777215,16777215)

3

Решение

подделка: используйте горизонтальную полосу прокрутки в качестве ползунка и позвольте виджету выполнить некоторую пользовательскую рисование с учетом положения полосы прокрутки (связанной с сигналом valueChanged)

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]