Qt单选按钮仅在实际检查按钮时调用SLOT()

时间:2017-05-31 21:45:36

标签: c++ qt signals-slots slot

我有一组单选按钮。这些都连接到相同的SLOT(updateImage())

以下是它们的设置方式:

connect(m_radio1, SIGNAL(toggled(bool)), this, SLOT(updateImage());
connect(m_radio2, SIGNAL(toggled(bool)), this, SLOT(updateImage());
connect(m_radio3, SIGNAL(toggled(bool)), this, SLOT(updateImage());

将单选按钮从一个按钮更改为下一个按钮时,此SLOT()被调用两次,一次用于取消选择先前选择的单选按钮,一次用于选择单击的单选按钮。

我想知道,有没有办法将我的SLOT()修改为仅在其中一种情况下,当点击的项目被检查时?

由于

2 个答案:

答案 0 :(得分:3)

您要求连接到切换的信号 - 无论何时切换对象,都会调用此信号。有什么令人惊讶的?

您可以连接到“已点击”信号,该信号提供您可以测试的“已检查”参数。

顺便说一句;如果使用现代Qt版本,你应该抛弃SIGNAL和SLOTS宏,而是使用在编译时检查的新connect()语法。

答案 1 :(得分:2)

由于你的信号有一个bool参数。

toggled(bool)

您可以将该参数添加到SLOT方法中。然后检查参数是否已选中。