当鼠标选中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(微调框),来让他们彼此之间相互更新。

效果

源码

 1 int nMin = 0;
 2 int nMax = 200;
 3 int nSingleStep = 10;
 4
 5 // 微调框
 6 QSpinBox *pSpinBox = new QSpinBox(this);
 7 pSpinBox->setMinimum(nMin);  // 最小值
 8 pSpinBox->setMaximum(nMax);  // 最大值
 9 pSpinBox->setSingleStep(nSingleStep);  // 步长
10
11 // 滑动条
12 QSlider *pSlider = new QSlider(this);
13 pSlider->setOrientation(Qt::Horizontal);  // 水平方向
14 pSlider->setMinimum(nMin);  // 最小值
15 pSlider->setMaximum(nMax);  // 最大值
16 pSlider->setSingleStep(nSingleStep);  // 步长
17
18 // 连接信号槽(相互改变)
19 connect(pSpinBox, SIGNAL(valueChanged(int)), pSlider, SLOT(setValue(int)));
20 connect(pSlider, SIGNAL(valueChanged(int)), pSpinBox, SLOT(setValue(int)));
21
22 pSpinBox->setValue(10);

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

QSS

样式一并奉上:

 1 QSlider::groove:horizontal {
 2           height: 6px;
 3           background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: , stop: 0 rgb(124, 124, 124), stop: 1.0 rgb(72, 71, 71));
 4  }
 5   QSlider::handle:horizontal {
 6           width: 1px;
 7           background: rgb(0, 160, 230);
 8           margin: -6px 0px -6px 0px;
 9           border-radius: 9px;
10  }

刻度位置及间隔

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

效果:

源码:

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

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

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

如下所示:

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

原文博客地址:

        http://blog.csdn.net/liang19890820

转载于:https://www.cnblogs.com/wjy-lulu/p/6435680.html

QT_QSlider的总结相关推荐

最新文章

  1. linux无任务内存被占满,centos服务器CPU被GC task占满,程序无内存溢出
  2. Programming asp.net笔记--第三章 Controls: Fundamental Concepts
  3. xshell 快速复制打开之前用过的ssh
  4. 在阿里,我们如何管理代码分支?
  5. 用nagios监控ORACLE服务器
  6. 苹果mac电脑修改并快速linux网络配置
  7. Jetty 服务器架构分析(中)
  8. Python笔记-沪深三百与茅台简单分析(2021年数据)
  9. CXF发布RestFul WebService和SOAP WebService
  10. 大工17春计算机基础,大工12春《计算机应用基础》在线测试3答案
  11. Java异步多线程编程探索之CompletableFuture
  12. 极域电子教室豪华版v6.0.2021有哪些功能
  13. ora-01652无法通过128(在表空间temp中)扩展temp段
  14. python爬取招聘网站源码及数据分析_如何用爬虫抓取招聘网站的职位并分析
  15. UT2015学习笔记
  16. 2020.4.08 C组模拟赛题解
  17. T007V-采购订单税码对应的税率所在后台表
  18. java中集合的分类以及集合的选择
  19. SAP成都研究院的体育故事
  20. 掌握成为优秀财务的核心能力

热门文章

  1. Python技术栈与Spark交叉数据分析双向整合技术实战--大数据ML样本集案例实战
  2. Android sqlite 数据库保存Date 类型
  3. jQuery DateTimePicker 日期和时间插件
  4. Redux 的黑魔法
  5. 【原创+整理】简述何为调用约定,函数导出名以及extern C
  6. linux小白-基础命令-useradd
  7. 使用Lucene分词
  8. FGMap学习之--加载百度地图
  9. 手写简单的双向数据绑定
  10. [记录] 解决img的1px空白问题