저는 C++과 Qt를 배우고 있으며, 너무 많은 연결을 만들지 않고도 여러 요소간에 값을 전달하는 가장 좋은 방법은 무엇인지 궁금합니다.커스텀 QtWidget에 값을 전달하는 가장 좋은 방법
지금은 SamplerModule
입니다. QPushButton
은 (ChordSelector
) 많은 맞춤을 넣었습니다.
connect(ui->btn_accords_X, SIGNAL(clicked()), ui->btn_accords_X, SLOT(changeChor()));
X
와 01
에서 12
에 : 이 위젯에서 내가 가진 각각의 버튼에 대한 하나의 연결을했습니다.
지금 버튼을 클릭하면 버튼의 색상이 변경됩니다. 그러나 나는 또한 내 SamplerModule
클래스에서 사용할 수있는 값으로 텍스트를 설정하려고합니다. 그리고이 버튼을 클릭 할 때마다 증가 된 값을 반환하고 싶습니다. 그래서 3 개 연결을이을에 대해 생각했습니다
:
click()(ChordSelector)->change()(ChordSelector)
버튼의 색상을 변경하고 제 값을 증가하기는 int로 마녀는 내 코드를 지정합니다.newChord(int) (ChordSelector) -> updateChord(int) (SamplerModule)
는 코드가
그래서 이런 식으로 작동합니다
changeText(QString) (SamplerModule) -> setText(QString) (ChordSelector)
고마워요, 먼저, 왜 on_yourButtonName_clicked()가 연결을 저장하는지 이해할 수 없습니다. click() 슬롯을 on_yourButtonName_clicked()로 대체하면됩니까? 그렇다면 C++의 초심자인데 제 질문의 일부입니다. ChordSelector에서 'SamplerModule'의 데이터에 액세스하려고하므로 'extern' 변수가있는 다른 헤더를 사용하는 것이 해결책이 될 수 있지만 그것을하는 것이 옳은 방법으로 보이지 않습니다. 'ChordSelector'에'SamplerModule'을 포함 할 수 없으므로 어떻게해야할지 모릅니다. 이 클래스에서 "포인터를 잡는"올바른 방법은 무엇입니까? 감사합니다. –
1. on_yourButtonName_clicked()를 자동 연결 슬롯으로 간주 할 수 있습니다. 따라서 수동으로 연결할 필요가 없습니다. 2. 'ChordSelector'가 싱글 톤 인스턴스 (전 세계적으로 단 하나의 인스턴스)일까요? 그렇다면 싱글 톤 클래스로 구현할 수 있습니다.싱글 톤 클래스에 대한 자세한 내용은 [이 위키] (https://en.wikipedia.org/wiki/Singleton_pattern)를 참조하십시오. –
감사! 나는 그것을 구현하려고 할 것입니다! –