我正在开发一个Qt应用程序,其中用户可以检查音频波形。给定一个典型的44.1kHz采样波,要求该波形可缩放到每个采样至少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信号),让小部件进行一些自定义绘制

10-04 19:36