2012-05-27 1 views
0

QSlider와 QSpinBox간에 데이터를 공유하고 싶습니다. 하나를 편집하면 다른 하나는 Model View Delegate 아키텍처를 사용하여 수동으로 수행하지 않고 동일한 값을 가져야합니다.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

이것은 내가 사용하는 것이지만 세터를 사용할 때 신호를 트리거하는 것입니다. 이제 blockSignals (true)를 사용하여 신호를 차단합니다. 방법. 감사합니다. . –

+0

@YassirEnnazk'setValue()'를 사용할 때 방출되지 않는'QSlider :: sliderMoved()'와'QAbstractSpinBox :: editingFinished()'신호를 살펴볼 수도 있습니다. – Anthony

+0

당신은 sliderMoved() 시그널에 맞지만 SpinBox를 편집 할 때'QAbstractSpinBox :: editingFinished()'는 트리거되지 않습니다. –