描述
QSlider 的 style() 其实提供了设置的方法,网络上大部分都是重写mousepressevent,但是如果你有阅读源码的经验,你会发现更nb的写法
实现一个QProxyStyle
class CSliderStyle : public QProxyStyle {
public:
CSliderStyle(QStyle *style = nullptr) : QProxyStyle(style) {}
int styleHint(StyleHint hint, const QStyleOption *option = nullptr, const QWidget *widget = nullptr, QStyleHintReturn *returnData = nullptr) const override {
if (hint == QStyle::SH_Slider_AbsoluteSetButtons) {
return Qt::LeftButton;
}
return QProxyStyle::styleHint(hint, option, widget, returnData);
}
};
在slider类中创建style
m_style = new CSliderStyle(style());
setStyle(m_style);
然后就会发现网上其他人写的一坨代码没这个方便,这个多优雅
总结
遇到问题时,不要想着用现有死方法解决,多看看源码,会有意想不到的收获