2012-01-09 67 views
1

我需要實現一個具有特定信號處理功能的簡單聲音編輯器。 我想垂直顯示聲音信息作爲大圖片 - 1024 x [大高度]。 所以我正在尋找Qt最好的方式來實現類似於網頁瀏覽器滾動的低cpu消耗垂直滾動。Qt滾動大圖像

+0

你是如何創建圖像?如果它只是信號波形,那麼使用QGraphicsScene/View創建它,然後您可以利用內置的空間加速結構和OpenGL渲染。 – cmannett85 2012-01-09 12:41:58

+0

我會在讀取文件時繪製圖像。它將是一個像http://lh4.ggpht.com/-crInga_olaA/RsYYBZsINOI/AAAAAAAAABo/qww0I98IBMk/data_acquisition.jpg – pavelkolodin 2012-01-09 13:27:24

回答

0

您需要重寫它的paintEvent()來創建自定義小部件。
看看this self-explanatory example關於如何創建下面的小部件。

enter image description here

+0

自定義小部件?但是Qt能夠提供一些有用的滾動功能嗎?爲什麼我需要自定義小部件?我可以使用一些內置的繪圖設施和滾動設備嗎?例如:(1)在內存中繪製一些圖像,(2)將該圖像插入滾動區域? – pavelkolodin 2012-01-09 13:28:48

+0

因爲您想實現的屬於自定義小部件。你正在談論可見的自定義Qt小部件 - 因此我向你提供我會選擇的東西。如果您想擴展您的自定義小部件以具備滾動功能,則可以從'QAbstractScrollArea'繼承自定義小部件,因此滾動區域和滾動條將成爲小部件的一部分。然後,您只需使用'paintEvent()'將您的圖像置於widget可見區域的頂部。非常直截了當。當然,如果你想實現縮放和其他功能,它將需要一些額外的工作。 – 2012-01-09 15:07:51

0

正常QScrollArea會給你想要的東西的99%的時間。但是你想要創建一個潛在巨大尺寸的位圖,並且你想將它存儲在RAM中 - 你將很快耗盡空間。

您可能需要一個系統,將圖像保存到文件,並使用滾動區域的邊界從文件中智能地加載其內容(並在其周圍保持一定的大小以使其平滑) - Qt不提供這個。這幾乎沒有什麼突破性的東西,所以一個網頁搜索「滾動非常大的圖像」或類似的應該給一個聰明的結果。

0

如果你的目的是繪製STFT數據,那麼你可以很容易地通過在QWT庫的窗口小部件之一:

http://qwt.sourceforge.net/

不管怎樣,看看它,它是一個偉大的來源靈感和代碼可用...