当鼠标选中QSlider 上时,通过点击的数值为setpageStep();通过左右方向键按钮移动的数值为setsingleStep().

鼠标滚轮上面两者都不行,不知道是什么原因!

应用:

  http://www.cnblogs.com/wjy-lulu/p/6435009.html

简述

  QSlider部件提供了一个垂直或水平滑动条。

  滑块是一个用于控制有界值的典型部件。它允许用户沿水平或垂直方向移动滑块,并将滑块所在的位置转换成一个合法范围内的值。

详细描述

QSlider很少有自己的函数,大部分功能在QAbstractSlider中。最有用的函数是setValue(),用来设置滑块的当前值;triggerAction()来模拟点击的效果(对快捷键有用),setSingleStep()、setPageStep()用来设置步长,setMinimum()和setMaximum()用于定义滚动条的范围。

QSlider提供了一些方法来控制刻度标记。可以使用setTickPosition()来表示刻度标记的位置,使用setTickInterval()来指定刻度的间隔;当前设置的刻度位置和间隔可以分别使用tickPosition()和tickInterval()函数来查询。

QSlider继承了一组全面的信号:

信号 描述
valueChanged() 当滑块的值发生了改变,发射此信号。tracking()确定在用户交互时,是否发出此信号。
sliderPressed() 当用户按下滑块,发射此信号。
sliderMoved() 当用户拖动滑块,发射此信号。
sliderReleased() 当用户释放滑块,发射此信号。

QSlider只提供整数范围。

注意:尽管QSlider可以处理非常大的数字,但是对于用户来说,难以准确使用很大范围的滑块。

滑块接受Tab键的焦点,并同时提供了一个鼠标滚轮和键盘接口。键盘接口如下:

    • Left/Right 移动水平滑块一个步长。
    • Up/Down 移动垂直滑块一个步长。
    • PageUp 上移一页。
    • PageDown 下移一页。
    • Home 移动至起始位置(最小值)。
    • End 移动至结束位置(最大值)

刻度位置

枚举 QSlider::TickPosition

这个枚举指定刻度线相对于滑块和用户操作的位置。

常量 描述
QSlider::NoTicks 0 不绘制任何刻度线
QSlider::TicksBothSides 3 在滑块的两侧绘制刻度线
QSlider::TicksAbove 1 在(水平)滑块上方绘制刻度线
QSlider::TicksBelow 2 在(水平)滑块下方绘制刻度线
QSlider::TicksLeft TicksAbove 在(垂直)滑块左侧绘制刻度线
QSlider::TicksRight TicksBelow 在(垂直)滑块右侧绘制刻度线

基本使用

下面我们来看一个示例,结合QSlider与上节分享的QSpinBox(微调框),来让他们彼此之间相互更新。

效果

源码

 int nMin = ;
int nMax = ;
int nSingleStep = ; // 微调框
QSpinBox *pSpinBox = new QSpinBox(this);
pSpinBox->setMinimum(nMin); // 最小值
pSpinBox->setMaximum(nMax); // 最大值
pSpinBox->setSingleStep(nSingleStep); // 步长 // 滑动条
QSlider *pSlider = new QSlider(this);
pSlider->setOrientation(Qt::Horizontal); // 水平方向
pSlider->setMinimum(nMin); // 最小值
pSlider->setMaximum(nMax); // 最大值
pSlider->setSingleStep(nSingleStep); // 步长 // 连接信号槽(相互改变)
connect(pSpinBox, SIGNAL(valueChanged(int)), pSlider, SLOT(setValue(int)));
connect(pSlider, SIGNAL(valueChanged(int)), pSpinBox, SLOT(setValue(int))); pSpinBox->setValue();

通过setMinimum()与setMaximum()函数,我们将取固定到一个合适的范围(0 - 200),连接信号槽后,当QSpinBox的值发生改变时,QSlider的值也会发生相应变化;反之亦然。最后,我们使用setValue()将QSpinBox的值设置为10,由于信号槽已经连接,所以这时QSlider的值也会发生改变。

QSS

样式一并奉上:

 QSlider::groove:horizontal {
height: 6px;
background: qlineargradient(x1: , y1: , x2: , y2: , stop: rgb(, , ), stop: 1.0 rgb(, , ));
}
QSlider::handle:horizontal {
width: 1px;
background: rgb(, , );
margin: -6px 0px -6px 0px;
border-radius: 9px;
}

刻度位置及间隔

    为了演示效果,这里我们不再采用QSS样式控制。

效果:

源码:

 QSlider *pSlider = new QSlider(this);
pSlider->setOrientation(Qt::Horizontal); // 水平方向
pSlider->setMinimum(nMin); // 最小值
pSlider->setMaximum(nMax); // 最大值
pSlider->setSingleStep(nSingleStep); // 步长
// pSlider->setTickInterval(40); // 设置刻度间隔
pSlider->setTickPosition(QSlider::TicksAbove); //刻度在上方

由于我们的取值范围是:0 - 200,步长为10。所以,在绘制刻度的时候,一共有21个刻度点(从0开始,每隔步长10绘制一个点,到200处结束)。

当我们使用setTickInterval(40)设置刻度间隔后,在绘制刻度的时候,就会有6个刻度点(从0开始,每隔步长40绘制一个点,到200处结束)。

如下所示:

也就是说,刻度点的个数 = 最大值 / 刻度间隔 + 1。

原文博客地址:

        http://blog.csdn.net/liang19890820

QT_QSlider的总结的更多相关文章

随机推荐

  1. Ribbon 负载均衡机制

    Ribbon 提供了几个负载均衡的组件,其目的就是让请求转给合适的服务器处理,因此,如何选择合适的服务器变成了负载均衡机制的核心,Ribbon 提供了如下负载均衡规则: RoundRobinRule: ...

  2. MMCM与PLL

    MMCM与PLL   1.the clock management title(CMT) 弄清楚BUFR, IBUFG,BUFG,GT,BUFH,是什么. 2.MMCM内部结构 3.PLL内部结构 4 ...

  3. SD-SDI播出系统---使用GTX TX产生恢复时钟

    SD-SDI播出系统---使用GTX TX产生恢复时钟 1. 2.SD-SDI恢复时钟的生成

  4. 企业数据总线(ESB)和注册服务管理(dubbo)的区别

    企业数据总线(ESB)和注册服务管理(dubbo)的区别 转载 2015年11月04日 09:05:14 7607  企业数据总线(ESB)和注册服务管理(dubbo)的区别 2015-03-09 0 ...

  5. Release Notes for XE5

    开发者之前说明 http://docwiki.embarcadero.com/RADStudio/XE5/en/Release_Notes_for_XE5

  6. win7 上运行 php7 +

    win7 安装 php7+ 很简单, 这里不赘述 如何在phpstudy 添加   php7   百度也很容易找到. 但是在 php 7 运行的时候总是报0x0000007  或者 缺少 .dll 文 ...

  7. console call的fallback console 兼容

    (function() { var noop = function noop() {}; var methods = [ 'assert', 'clear', 'count', 'debug', 'd ...

  8. 【java】之获取HTTP请求的值常用方法

    logger.info("销帐完成通知回调,请求URL:"+req.getRequestURI().toString()); InputStream in = req.getInp ...

  9. 学习-工作:GTD

    ylbtech-学习-工作:GTD GTD就是Getting Things Done的缩写,翻译过来就是“把事情做完”,是一个管理时间的方法.GTD的核心理念概括就是必须记录下来要做的事,然后整理安排 ...

  10. 廖雪峰Java2面向对象编程-3继承和多态-1继承

    1.继承 继承是一种代码复用的方式. Student与Person有相同部分的代码. Student可以从Person继承,这样Student获得了Person的所有功能,只需要编写新增的功能即可.通 ...