项目中用到了一组范围,可是Qt中自带的QSlider只有一个滑块,不满足需求,需要实现一个带有两个滑块的Slider。
首先在界面上引用一个QSlider类,如下图
然后在QSlider上,右键:
提升类的名称填入QxtSpanSlider,头文件自动生成的为小写,改为QxtSpanSliderh
点击添加,提升后运行程序:
滑块的两个值改变后会发出信号lowerValueChanged和upperValueChanged
测试程序源码地址
几种方法了。
QSlider有当值改变就会触发的signals
像valueChanged( int )
你只需在你重绘图的那个widget写一个slot
只需定义这样的slot
void triggerRepaint( int ){
QPaintEvent event( QRect( , , , , ) )//给你具体重绘的矩形或是一个区域QRegion
for(;;;)//循环体 自行重绘
QWidget::paintEvent( &event );
//或者如果你是整个widget重绘就直接调用
repaint() 或是 update()
}
然后QObject::connect() 就OK了。
具体看文档吧
有问题HI
自己emit一个信号,步骤如下(保证你这个两个cpp都对应的类是继承自QObject类):
准备两个cpp,一个是包含QSpinBox的cpp,一个是需要获得SpinBox改变的值
1、在QSpinBox的类中(可能是QWidget)中增加一个信号void spinBoxChanged(QString);
2、对于一个QSpinBox会有一个valueChanged的信号槽,假设你已经实现了这个槽函数中,并且在这个槽函数中得到了改变后的值,然后emit spinBoxChanged(changeValue);
3、再在另一个需要获得SpinBox的cpp对应的类(假设是QClass)中增加一个与信号函数的参数相同的槽函数
void slotSpinBoxChanged(QString)并实现之
4、连接两个对象的信号和槽,一般在初始化中连接
可能写的不太好懂,为了简单,你可以利用QT的一个信号对应多个槽的机制,不需要自己发信号,直接把槽函数和QSpinBox的valueChanged信号相连,这样就更简单了。
sliderMoved()信号,
QSlider::setRange(min,max);
QSlider::setValue(int);
QSlider::setSliderPosition(int);
以上就是关于带有两个滑块的QSlider全部的内容,包括:带有两个滑块的QSlider、Qt小白求解救。怎么用paintEvent一遍又一遍地画呢只看楼主 收藏 回复、如何实时取得QSpinBox的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)