切换QPushButton

时间:2013-03-18 10:16:08

标签: c++ qt user-interface

我有一个简单的GUI:

QPushButton,当点击时,将显示一个数字(比如11)(我为此使用QLCDnumber)。 再次点击时,应显示另一个数字(例如10)。

我的目标是使用QAbstractButton :: toggled(bool checked)功能。

据我所知,正确的信号插槽连接可能如下所示:

connect(ui.startstopButton, SIGNAL(toggled(bool)), thread, SLOT(start()));

(我另外使用线程,但它们不是问题)

我的问题: 如何在我的signal-slot-statement中“切换按钮”(checked = true)和“按钮未切换”(ckecked = false)之间有什么不同?

我使用了SIGNAL(toggled(bool = true))SIGNAL(toggled(bool checked = true))SIGNAL(toggled(true))等变体,但两者都没有效果。我总是得到调试器消息:

Object::connect: No such signal QPushButton::toggled(bool = true) in testthread.cpp:15
Object::connect:  (sender name:   'startstopButton')

我绝对启用了我的按钮setCheckable

2 个答案:

答案 0 :(得分:2)

信号只是toggled(bool),接收端也有一个bool参数:

connect(ui.startstopButton, SIGNAL(toggled(bool)), thread, SLOT(start(bool)));

这样,切换信号发送的布尔值将由插槽接收。 在槽函数中,您可以检查接收到的布尔值是否为真。

假设线程:start()是你实际写的一些函数,如果没有,创建一个新的槽来检查布尔值,然后启动线程。

connect(ui.startstopButton, SIGNAL(toggled(bool)), threadStarter, SLOT(start(bool)));

答案 1 :(得分:0)

你做不到。相反,您可以将其传递到自定义插槽:

void checkIt(bool checked) // This is a slot
{
}

// ...

connect(ui.startstopButton, SIGNAL(toggled(bool)), thread, SLOT(checkIt(bool)));