【问题标题】:Qt - How to work around QScroller maximum size limitation (16777215 pixels)Qt - 如何解决 QScroller 最大尺寸限制(16777215 像素)
【发布时间】:2013-09-18 06:31:39
【问题描述】:

我正在开发一个用户能够检查音频波形的 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)

【问题讨论】:

    标签: c++ qt user-interface graphics waveform


    【解决方案1】:

    伪造它:使用水平滚动条作为滑块,并让小部件根据滚动条位置进行一些自定义绘画(连接到 valueChanged 信号)

    【讨论】:

    • 建议的方法将改变滚动行为:一般滚动与动态滚动。如果作者没问题,那就可以了。
    • 嗯。这是一个可能的解决方案。我将不得不研究 QScrollBar 是否可以处理更大的范围。我想它可以,因为文档没有提到任何限制 (qt-project.org/doc/qt-4.8/qabstractslider.html#setRange)
    • 您可以缩放滚动。我敢肯定你不需要这么大的滚动分辨率。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 2022-01-05
    • 1970-01-01
    相关资源
    最近更新 更多