首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >切换QPushButton

切换QPushButton
EN

Stack Overflow用户
提问于 2013-03-18 10:16:08
回答 2查看 5.8K关注 0票数 3

我有一个简单的GUI:

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

我的目标是为此使用QAbstractButton::toggled ( bool )特性。

正如我所了解的,适当的信号插槽连接可能如下所示:

代码语言:javascript
运行
复制
connect(ui.startstopButton, SIGNAL(toggled(bool)), thread, SLOT(start()));

(我还使用线程,但它们并不是问题所在)

我的问题:在我的信号插槽语句中,“按钮切换”(= true)和“按钮没有切换”(ckecked = false)有什么区别?

我使用了像SIGNAL(toggled(bool = true))SIGNAL(toggled(bool checked = true))SIGNAL(toggled(true))这样的变体,但两者都不起作用。我总是收到调试器消息:

代码语言:javascript
运行
复制
Object::connect: No such signal QPushButton::toggled(bool = true) in testthread.cpp:15
Object::connect:  (sender name:   'startstopButton')

我肯定已经启用了按钮的setCheckable

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-18 10:19:14

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

代码语言:javascript
运行
复制
connect(ui.startstopButton, SIGNAL(toggled(bool)), thread, SLOT(start(bool)));

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

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

代码语言:javascript
运行
复制
connect(ui.startstopButton, SIGNAL(toggled(bool)), threadStarter, SLOT(start(bool)));
票数 3
EN

Stack Overflow用户

发布于 2013-03-18 10:21:45

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

代码语言:javascript
运行
复制
void checkIt(bool checked) // This is a slot
{
}

// ...

connect(ui.startstopButton, SIGNAL(toggled(bool)), thread, SLOT(checkIt(bool)));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15474297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档