2013-03-18 56 views
1

我有一个简单的GUI:切换一个QPushButton

甲QPushButton,当按下时,一个数(比如11)将被示出(I使用QLCDnumber此)。 当再次点击时,会显示另一个数字(比如说10)。

我的目标是为此使用QAbstractButton ::切换(布尔检查)功能。

当我了解,一个正确的信号插槽连接看起来是这样的:

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

(我还使用线程,但他们不是问题)

我的问题: 我的信号槽声明中,“按钮切换”(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

+0

连接信号切换'(布尔)',比如'buttonToggled(布尔)'。在这个槽内,你可以手动调用'thread-> start()' – borisbn 2013-03-18 10:19:18

+0

根据argumetn值你不能建立连接,你必须把bool作为参数传递给槽。 – 2013-03-18 10:41:04

回答

1

的信号只是toggled(bool),接收端将有一个布尔参数太:

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

这种方式由所述触发信号发送的布尔值,将由时隙被接收。 在插槽功能中,您可以检查收到的布尔值是否为真。

这里假设thread:start()是你实际写的一些函数,如果不是,创建一个新的插槽,它将检查布尔值的值,然后启动线程。

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

你不能。相反,你可以将它传递给您的自定义插槽:用自己的插槽与`bool`参数

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

// ... 

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