2012-03-23 165 views
0

我想爲paintEvent中的qslider繪製一個刻度線,所以我應該得到每個刻度線的確切位置。如您所知,滑塊的手柄需要一些空間,因此第一個刻度線不會位於滑塊的左側/頂部位置,有幾個像素的偏移量。同樣的事情發生在最後一個表示最大值的刻度線上。我想知道空間有多少像素? (在win和mac上,手柄的寬度不一樣)如何獲得Qslider中第一個和最後一個刻度線的位置?

回答

1

如果您還沒有這樣做,請下載Qt源代碼並複製它們的操作方式。您將要在各種Q...Style類別看,即QMacStyleQWindowsXPStyle等一些關鍵計算來自:

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

看看在各種drawComplexControl方法case CC_Slider:,其中滑塊控件繪製。例如,在Qt 4.7代碼中,這開始於line 2699 in qwindowsxpstyle.cpp

+0

非常感謝,這條建議對我有很大的幫助。 – Royt 2012-03-27 05:55:58

相關問題