您的位置:首页 > 编程语言 > Qt开发

QSlider使用技巧

2012-01-02 18:56 267 查看
1. 创建一个简单的QSlider

[align=left]// 中部云台速度控制[/align]
[align=left]      QWidget *speedWidget = createWidgetWithSize(tabWidget, 210, 20);[/align]
[align=left]      QLabel *minus = new QLabel("-");[/align]
[align=left]      QLabel *add = new QLabel("+");[/align]
[align=left]      minus->setObjectName("minusLabel");[/align]
[align=left]      add->setObjectName("addLabel");[/align]
[align=left]
[/align]
[align=left]      QHBoxLayout *speedLayout = new QHBoxLayout();[/align]
[align=left]      speedLayout->setContentsMargins(5,2,3,0);[/align]
[align=left]      speedLayout->setSpacing(0);[/align]
[align=left]      speedSlider = new QSlider(Qt::Horizontal, tabWidget);[/align]
[align=left]      speedSlider->setObjectName("speedSlider");[/align]
[align=left]      speedSlider->setRange(0,10);[/align]
[align=left]      speedSlider->setPageStep(1);[/align]
[align=left]      speedLayout->addWidget(minus);[/align]
[align=left]      speedLayout->addWidget(speedSlider);[/align]
[align=left]      speedLayout->addWidget(add);[/align]
[align=left]      speedWidget->setLayout(speedLayout);[/align]
注意,在这里面speedSlider->setPageStep(1);是设置QSlider上一次鼠标点击,滑动柄移动的距离,若不设置,默认步长是setRange()中设置的大小。

2. 通过QSS更改QSlider的样式
参考链接:(http://blog.sina.com.cn/s/blog_791f544a0100s2ml.html)
"
QSlider中有四个比较重要的辅助控制器(subcontrol),groove表示槽的部分,handle表示滑块,add-page表示未滑过的槽部分,sub-page表示已滑过的槽部分。在辅助控制器后面可以设置状态,horizontal就是QSS生效的QSlider的状态,注意这里设置的方向一定要和slider对象的方向一致,如果slider是vertical的,QSS设定的是horizontal的,那么是看不到效果的。
"

[align=left]#speedSlider::groove:horizontal{[/align]
[align=left]border: 1px solid #666;[/align]
[align=left]border-bottom:1px solid #fff;[/align]
[align=left]border-right:1px solid #fff;[/align]
[align=left]border-radius:3px;[/align]
[align=left]height: 4px;[/align]
[align=left]left:12px;[/align]
[align=left]right:12px;[/align]
[align=left]margin:0px;[/align]
[align=left]background-color: #999;[/align]
[align=left]margin:0px;[/align]
[align=left]}[/align]
[align=left]#speedSlider::handle:horizontal{[/align]
[align=left]border-image:url(./images/speed-slider-handle.jpg);[/align]
[align=left]width:10px;[/align]
[align=left]margin:-5px -7px; [/align]
[align=left]}[/align]
注意:在使用border-image后,
margin:-5px -7px;
是为了控制滑动柄的高何宽。至于原理,请参考《C++ GUI QT4编程(第2版)》19章--自定义外观

3. QSlider自动移动到鼠标点击位置
(参考链接:http://hi.baidu.com/%E9%F3%B3%BE%BE%B2/blog/item/b1f69d351a67633f0a55a9d9.html)
网上有网友实现了,关于这个效果,我自己还没有实现,今后应该用得上,在此做个记录

显示效果截图:





关于样式表的例子,诺基亚官网上有一篇很好的文章,链接如下:
http://developer.qt.nokia.com/doc/qt-4.8/stylesheet-examples.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt border 编程 url c