Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 切换QPushButton_C++_Qt_User Interface - Fatal编程技术网

C++ 切换QPushButton

C++ 切换QPushButton,c++,qt,user-interface,C++,Qt,User Interface,我有一个简单的GUI: 一个QPUSH按钮,当点击时,将显示一个数字(比如11)(我使用QLCDNAMER)。 再次单击时,将显示另一个数字(如10) 我的目标是使用QAbstractButton::toggled(bool checked)特性来实现这一点 据我所知,正确的信号插槽连接可能如下所示: connect(ui.startstopButton, SIGNAL(toggled(bool)), thread, SLOT(start())); (我另外使用线程,但它们不是问题所在) 我的

我有一个简单的GUI:

一个QPUSH按钮,当点击时,将显示一个数字(比如11)(我使用QLCDNAMER)。 再次单击时,将显示另一个数字(如10)

我的目标是使用QAbstractButton::toggled(bool checked)特性来实现这一点

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

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

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

connect(ui.startstopButton, SIGNAL(toggled(bool)), thread, SLOT(start(bool)));
这样,切换信号发送的布尔值将被插槽接收。 在slot函数中,您可以检查接收到的布尔值是否为真

这里假设thread:start()是您实际编写的某个函数,如果不是,则创建一个新的槽来检查布尔值,然后启动线程

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

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

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

// ...

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

将信号
toggled(bool)
与您自己的插槽连接到
bool
参数,例如
buttonToggled(bool)
。在此插槽内,您可以手动调用
thread->start()
您无法根据argumetn值建立连接,您必须将bool作为参数传递给插槽。