如何调整QSlider的手柄?

时间:2016-06-28 08:37:34

标签: c++ qt qslider

我正在为触摸屏编写应用程序,而且默认句柄太小而无法可靠地抓取,所以我想让它更大。根据官方文档,关于SE和其他几个论坛的几个答案,这应该在QWidget的构造函数中工作:

sliderGrandMaster = new QSlider(Qt::Vertical, panelRight);
sliderGrandMaster->setGeometry(          appdata->buttonBorder ,    //Left
                   buttonTopRight +      appdata->buttonBorder ,    //Top
                        halfwidth - (2 * appdata->buttonBorder),    //Width
            buttonRemainingHeight - (2 * appdata->buttonBorder));   //Height
sliderGrandMaster->setRange(0, RANGE_MAX);
sliderGrandMaster->setTickInterval(RANGE_MAX / 10);
sliderGrandMaster->setTickPosition(QSlider::TicksBothSides);
QString temp =  QString("handle:vertical { background: green; height: %1px; margin: 0 -%2px; }")
                .arg(buttonRemainingHeight / 5)
                .arg(halfwidth / 3);
sliderGrandMaster->setStyleSheet(temp);

但似乎没有效果。无论我在样式表中放置什么值,手柄都是相同的小尺寸,并且它甚至不是绿色。

在运行时使用我的值,temp最终为handle:vertical { background: green; height: 66px; margin: 0 -32px; }。滑块的大小为94px wide by 331px tall

我错过了什么吗?

编辑:

此:

QString temp =  QString("QSlider::handle { background: green; height: %1px; width: %1px; margin: 0 -%2px; }")
                .arg(buttonRemainingHeight / 5)
                .arg(halfwidth / 3);
sliderGrandMaster->setStyleSheet(temp);

至少让它变绿了。但规模仍然是错误的。 Qt版本5.4.2

2 个答案:

答案 0 :(得分:2)

您只需使用简单的样式表即可更改手柄的大小。示例:

QSlider

完成以下样式表:

run()

答案 1 :(得分:1)

好的,使用Qt 5.6.1我在这方面取得了一些进展。以下代码

QWidget
可以将

放入emty QSliders中。它只添加两个var Parse = require('parse/node'); Parse.initialize('myAppId'); Parse.serverURL = 'http://localhost:1337/parse'; var userQuery = new Parse.Query(Parse.User); userQuery.equalTo('username', 'the_username'); userQuery.find() .then(user => { return user; }) .then(user => { var Systems = Parse.Object.extend("systems"); var systemQuery = new Parse.Query(Systems); systemQuery.equalTo('customer', 'myCustomer'); systemQuery.find() .then(system => { var relation = user.relation('systems_ref'); // HERE I GET RELATION IS NOT A FUNC relation.add(system); console.log('Adding relation'); user.save() .then(response => console.log('user saved')) .catch(error => console.log('Error saving', error)); }).catch(error => console.log('Error find system', error)); }); ,其中一个使用样式表进行修改。

正如您所看到的,我过去常常更换凹槽,它正在按预期工作 。但是有一些奇怪的问题可能是一个错误。尝试注释凹槽样式表的某些属性,例如 border background margin 。如果没有有效属性,则会删除句柄的 width 属性。由于我在文档中找不到任何约束,我想知道为什么会发生这种情况。

另请注意在句柄周围绘制 border 的问题。似乎需要一些更精细的调整。 ;)

screenshot of sliders

总结快速解决方案应该为凹槽添加一些默认属性。