QT控件之QSlider
singleStep:比如按下键盘的左右建,每次移动的距离
pageStep:比如用鼠标对准滑动条的前面按下,每次移动的距离
value:初始默认值
接下来看该控件拥有的信号:
重点看后面的四个,看字面意思就不难理解,分别为:移动,按下,释放,改变,接下来看什么情况会触发:
首先定义了四个槽函数,看信号发出后会执行哪个函数:
void Move(int x); void Press(); void Release(); void Change(int x);
void Widget::Move(int x) { qDebug()<<"Move"<<x; } void Widget::Press() { qDebug()<<"Press"; } void Widget::Release() { qDebug()<<"Release"; } void Widget::Change(int x) { qDebug()<<"Change"<<x; }
经过实验发现:Move只有在滑动的时候会触发,Change在按下或者移动都会触发。
接下来利用qss,改变QSlider样式,使其更加美观:
以上都是默认就有的事件,接下来通过自定义,使其继承QSlider,重载mousePressEvent(QMouseEvent*);
新建好相关的类后,将QSlider提升:
重载事件中让其打印坐标值:
但是运行后发现其他事件都不能执行了。
在重载的事件函数中添加:
运行:
按下鼠标,不能随意跳动到指定位置,接下来就该问题手动解决: