带有两个滑块的QSlider

带有两个滑块的QSlider,第1张

项目中用到了一组范围,可是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的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9325733.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存