Я работаю над приложением 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)
подделка: используйте горизонтальную полосу прокрутки в качестве ползунка и позвольте виджету выполнить некоторую пользовательскую рисование с учетом положения полосы прокрутки (связанной с сигналом valueChanged)
Других решений пока нет …