我想要将QSlider连接到QDoubleSpinBox,但是虽然代码编译得很好,并且可以运行在简单的QSpinBox上,但它不能运行在QDoubleSpinBox上
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)) );发布于 2012-01-10 00:45:38
QSlider和QDoubleSpinBox在valueChanged/setValue中接受不同类型的参数(当然,QSlider使用整数,而QDoubleSpinBox使用双精度)。更改滑块信号和插槽的参数类型可能会有所帮助:
connect(spinBox1, SIGNAL(valueChanged(double)),horizontalSlider1,SLOT(setValue(int)) );
connect(horizontalSlider1,SIGNAL(valueChanged(int)),spinBox1,SLOT(setValue(double)) );我不确定Qt是否能自动为您处理这种类型转换;如果不能,您必须定义自己的插槽,以便在正确的对象上调用setValue()
发布于 2012-01-10 00:54:55
您必须添加自己的插槽,它转换参数类型并发出信号或直接更新滑块。
发布于 2012-01-10 02:31:29
正如戴夫·基利安回答的那样,QSlider的信号和插槽没有使用double。此外,Qt4不会自动转换类型;它不允许您连接它们。因此,您必须编写自己的转换槽来更新其他项的值。
https://stackoverflow.com/questions/8791621
复制相似问题