如何获得Qslider中第一个和最后一个刻度线的位置?

时间:2012-03-23 06:58:06

标签: qt qt4 qslider

我想在paintEvent中为qslider绘制一个刻度线,所以我应该得到每个刻度线的确切位置。如您所知,滑块的手柄需要一些空间,因此第一个刻度标记不位于滑块的左/上位置,有几个像素的偏移。同样的事情发生在指示最大值的最后一个刻度线上。我想知道这个空间有多少像素? (在win和mac上,手柄的宽度不同)

1 个答案:

答案 0 :(得分:1)

如果您还没有这样做,请下载Qt源代码并复制他们的操作方式。您需要查看各种Q...Style类,即QMacStyleQWindowsXPStyle等。一些关键计算来自:

  • QStyle :: sliderPositionFromValue()方法
  • QStyle :: pixelMetric(QStyle :: PM_SliderTickmarkOffset,...)

查看drawComplexControl的各种case CC_Slider:方法,其中绘制了滑块控件。例如,在Qt 4.7代码中,这将从line 2699 in qwindowsxpstyle.cpp开始。