Как получить положение первой и последней отметки в Qslider? - PullRequest
0 голосов
/ 23 марта 2012

Я хочу нарисовать отметку для qslider в paintEvent, поэтому я должен получить точное положение каждой отметки.Как вы знаете, ручка ползунка занимает некоторое пространство, поэтому первая отметка не находится в левом / верхнем положении ползунка, смещение составляет несколько пикселей.То же самое происходит с последней отметкой, которая указывает максимальное значение.Я хочу знать, сколько пикселей пространства?(На win и mac ручка не одинаковой ширины)

1 Ответ

1 голос
/ 23 марта 2012

Если вы еще этого не сделали, скачайте исходный код Qt и скопируйте, как они это делают. Вы захотите взглянуть на различные Q...Style классы, т.е. QMacStyle, QWindowsXPStyle и т. Д. Некоторые из ключевых расчетов получены из:

  • Метод QStyle :: sliderPositionFromValue ()
  • QStyle :: pixelMetric (QStyle :: PM_SliderTickmarkOffset, ...)

Посмотрите различные drawComplexControl методы для case CC_Slider:, где отображаются элементы управления ползунка. В коде Qt 4.7 это начинается, например, со строки 2699 в qwindowsxpstyle.cpp .

...