2012-05-27 62 views
0

我想在QSlider和QSpinBox之间共享数据。如果我编辑一个,另一个应该得到相同的值,而不必使用模型视图委托架构手动完成。QSlider和QSpinBox之间的Qt模型视图体系结构

任何想法如何使用这种架构与整数模型?

感谢

+2

“QSlider”和“QSpinBox”委托编辑器?如果不是,你根本不应该使用MVD - 只需使用信号/插槽。 – cmannett85

+1

我甚至不明白除信号/插槽外还有其他方法。这些简单的小部件仅代表较低和较高范围之间的值。他们没有真正建模任何数据结构。只是产生价值输出来驱动别的东西。 – jdi

回答

4

我不能肯定我明白你的问题,但在Qt来做到这一点的标准方法是只使用内置的信号和槽valueChanged(int)setValue(int)

connect(slider, SIGNAL(valueChanged(int)), spinbox, SLOT(setValue(int))); 
connect(spinbox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int))); 

请注意,这不会产生无限递归,并且在两行代码中,它非常自动。

+0

这是我使用的,但是当我使用setter时它触发了信号。现在我使用blockSignals(true)来阻止信号;方法。 谢谢。 –

+0

@YassirEnnazk您可能还想查看'QSlider :: sliderMoved()'和'QAbstractSpinBox :: editingFinished()'信号,当您使用'setValue()'时不会发出这些信号。 – Anthony

+0

对于sliderMoved()信号您是正确的,但是当我使用编辑SpinBox时,不会触发'QAbstractSpinBox :: editingFinished()'。 –

相关问题