2012-01-09 3 views
1

Мне нужно реализовать простой звуковой редактор с определенной функцией обработки сигнала. Я хочу отображать информацию о звуке вертикально как большое изображение - 1024 x [большая высота]. Итак, я ищу лучший способ Qt по внедрению вертикальной прокрутки с низким потреблением процессора, похожей на прокрутку веб-браузеров.Qt прокрутка большого изображения

+0

Как вы создаете изображение? Если это всего лишь форма сигнала сигнала, то создайте его с помощью QGraphicsScene/View, а затем вы сможете воспользоваться встроенными структурами пространственного ускорения и рендерингом OpenGL. – cmannett85

+0

Я буду рисовать изображение во время чтения файла. это будет такой спектр, как http://lh4.ggpht.com/-crInga_olaA/RsYYBZsINOI/AAAAAAAAABo/qww0I98IBMk/data_acquisition.jpg – pavelkolodin

ответ

0

Необходимо создать пользовательский виджет, переопределив его paintEvent().
Посмотрите на this self-explanatory example о том, как создать следующий виджет.

enter image description here

+0

Пользовательский виджет? Но может ли Qt дать некоторые полезные возможности прокрутки? Зачем нужен пользовательский виджет? Могу ли я использовать некоторые встроенные средства рисования в сочетании со средствами прокрутки? Что-то вроде: (1) нарисовать какое-то изображение в памяти, (2) вставить это изображение в область прокрутки? – pavelkolodin

+0

Потому что то, что вы хотите достичь, подпадает под пользовательский виджет. Вы говорите о видимом пользовательском виджете Qt, поэтому я предлагаю вам то, что я бы выбрал. Если вы хотите расширить свой собственный виджет, чтобы иметь возможность прокрутки, вы можете наследовать свой собственный виджет из 'QAbstractScrollArea', поэтому область прокрутки и полосы прокрутки будут частью виджета. Затем вы просто поместите свое изображение поверх видимой области виджета, используя 'paintEvent()'. Довольно прямо. Конечно, если вы хотите реализовать масштабирование и другие функции, для этого потребуется дополнительная работа. –

0

Нормальный QScrollArea даст вам то, что вы хотите 99% времени. Но вы хотите создать растровое изображение потенциально массивного размера, и вы хотите сохранить его в ОЗУ - вы быстро исчерпаете пространство.

Возможно, вам понадобится система, в которой вы сохраняете изображение в файл, и используйте границы области прокрутки, чтобы разумно загружать содержимое из файла (и определенный размер вокруг него, чтобы сделать его гладким) - Qt не дает этого. Это вряд ли новаторский материал, поэтому поиск в Интернете «прокрутки очень больших изображений» или чего-то подобного должен дать умный результат.

0

Если вы задумали построить данные КК, то вы можете легко принять один из виджетов в библиотеке QWT:

http://qwt.sourceforge.net/

Во всяком случае, посмотрите на него, это отличный источник вдохновение и код ...

Смежные вопросы