我想在 QSlider 上拦截 QPaintEvent 并绘制它。但我找不到有关事物几何形状的详细信息。我可以知道整个小部件的 rect() 但你怎么知道小部件矩形中第一个刻度线或最后一个刻度线的位置? (跟踪 channel 的左侧和右侧有一个边距)。还是“ handle ”的矩形?
最佳答案
感谢回复中的提示。经过一些调查,这似乎有效。对于对某人有用的情况:
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)
关于qt - QSlider (Qt) 的自定义绘图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18055748/