首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将QSlider连接到QDoubleSpinBox

如何将QSlider连接到QDoubleSpinBox
EN

Stack Overflow用户
提问于 2012-01-10 00:22:15
回答 6查看 14.2K关注 0票数 5

我想要将QSlider连接到QDoubleSpinBox,但是虽然代码编译得很好,并且可以运行在简单的QSpinBox上,但它不能运行在QDoubleSpinBox上

代码语言:javascript
复制
QSlider *horizontalSlider1 = new QSlider();
QDoubleSpinBox *spinBox1 = new QDoubleSpinBox();

connect(spinBox1, SIGNAL(valueChanged(double)),horizontalSlider1,SLOT(setValue(double)) );
connect(horizontalSlider1,SIGNAL(valueChanged(double)),spinBox1,SLOT(setValue(double)) );
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-01-10 00:45:38

QSlider和QDoubleSpinBox在valueChanged/setValue中接受不同类型的参数(当然,QSlider使用整数,而QDoubleSpinBox使用双精度)。更改滑块信号和插槽的参数类型可能会有所帮助:

代码语言:javascript
复制
connect(spinBox1, SIGNAL(valueChanged(double)),horizontalSlider1,SLOT(setValue(int)) );
connect(horizontalSlider1,SIGNAL(valueChanged(int)),spinBox1,SLOT(setValue(double)) );

我不确定Qt是否能自动为您处理这种类型转换;如果不能,您必须定义自己的插槽,以便在正确的对象上调用setValue()

票数 7
EN

Stack Overflow用户

发布于 2012-01-10 00:54:55

您必须添加自己的插槽,它转换参数类型并发出信号或直接更新滑块。

票数 7
EN

Stack Overflow用户

发布于 2012-01-10 02:31:29

正如戴夫·基利安回答的那样,QSlider的信号和插槽没有使用double。此外,Qt4不会自动转换类型;它不允许您连接它们。因此,您必须编写自己的转换槽来更新其他项的值。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8791621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档