代码之家  ›  专栏  ›  技术社区  ›  jcuenod

qscrollbar对齐值

  •  1
  • jcuenod  · 技术社区  · 14 年前

    我想实现一个滚动条来捕捉特定的值(就像Windows可以捕捉到屏幕边缘一样)。我的想法是,当我向下拖动滚动条时,它会在滚动条接近值时将其捕捉到值。

    我的场景显示了3个章节的文本。我希望能够快速到一章的开头或结尾。当然,要转到第一章的开头,滚动条可以滚动到顶部,同样也可以滚动到第三章的结尾。所以我想在滚动条上画两行来表示第二章和第三章的开头,然后让滚动条的顶部和底部对齐这些行。所以我真的很想在 QTextBrowser 但我可以控制 qtextbrowser(qtextbrowser) 用一个 QSnapScrollBar 我只是不知道从哪里开始。

    任何帮助都将不胜感激。

    1 回复  |  直到 14 年前
        1
  •  0
  •   swanson    14 年前

    您可以滚动自己的自定义滚动条类,该类继承自 QScrollBar 或者也许 QAbstractSlider 并覆盖 valueChanged(int) 信号。一些基本的伪代码:

    if currentValue is within 5 of snapvalue1:
        set scrollbar value to snapvalue1
    elsif currentValue is within 5 of snapvalue2:
        set scrollbar value to snapvalue2
    ...
    
    update/redraw widget
    

    尽管我有一种感觉,这对最终用户来说可能是不稳定的。

    你也可以调查 pageStep 属性(它控制在使用Page up/down键时滚动的范围),也许可以用于您的目的。