我还在学习C ++和Qt,我想知道在多个元素之间传递值的最佳方法是什么,而不需要建立太多的连接。
目前,我已经设置了一个小工具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)
更改按钮颜色并增加我的值,一个女巫指定我的和弦。newChord(int) (ChordSelector) -> updateChord(int) (SamplerModule)
通知我的小部件和弦已被更改changeText(QString) (SamplerModule) -> setText(QString) (ChordSelector)
所以这种方式应该可行,但由于我有12个按钮,我需要36个连接来做这个小技巧。 你们有什么建议吗?
答案 0 :(得分:1)
如果您使用的是QtDesigner,则QPushButton
会有一个名为on_yourButtonName_clicked()
的默认广告位。它会自动连接到click()
的{{1}}信号。这可以保存第一个连接。
在QPushButton
中按住指向SamplerModule
的指针,或者拥有ChordSelector
的全局单例实例,以便在SamplerModule
中轻松访问它。通过这种方式,你不必使用信号/槽来调用ChordSelector
,一个简单的函数调用就可以了。这将保存第二个连接。
您可以在updateChord(int)
的{{1}}位置拨打setText(QString)
,而不是ChordSelector
。这将保存第三个连接。