2012-05-27 84 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()'。 –

相關問題