我想将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)) );

最佳答案

QSlider和QDoubleSpinBox在valueChanged/setValue中采用不同类型的参数(当然,QSlider使用int,QDoubleSpinBox使用 double )。更改滑块信号和插槽的参数类型可能会有所帮助:

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

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

关于qt - 如何将QSlider连接到QDoubleSpinBox,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8791621/

10-13 03:09