自定义绘制QSlider(Qt)

tru*_*ru7 3 qt slider custom-draw

我想截取QSlider上的QPaintEvent并绘制它.但是我无法找到关于物体几何形状的细节.我可以知道整个小部件的rect(),但是如何判断小部件矩形中第一个tickmark或最后一个的位置?(跟踪通道左右两侧有一个边距).还是"手柄"的矩形?

tru*_*ru7 6

感谢回复中的提示.经过一番调查后,这似乎有效.如果它对某人有用:

QStyleOptionSlider opt;
slider->initStyleOption(&opt);

QStyle *styl=style();
Rect rectHandle=styl->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, NULL);
Rect rectGroove=styl->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderGroove, NULL);

int avl=styl->pixelMetric(QStyle::PM_SliderSpaceAvailable, &opt, this); // width in an horizontal slider of the groove (width of widget - margins)
Run Code Online (Sandbox Code Playgroud)