【发布时间】:2017-12-19 03:40:31
【问题描述】:
我正在使用 qt 4.8.6 和 Visual Studio 2008 开发一个项目,但被 clicked() 和 clicked(bool) 弄糊涂了。在为将发出信号的对象建立连接时:
connect(sender, SIGNAL(clicked(bool)), receiver, SLOT(myslot()));
将触发 myslot();和
connect(sender, SIGNAL(clicked()), receiver, SLOT(myslot()));
不会触发它。但是,我发现其他许多关于连接的示例都使用 clicked() not clicked(bool)。 为什么我不能使用 clicked()? 我通过 Qt Assistant 浏览了一下:
void QAbstractButton::clicked (bool checked = false) [信号]
当按钮被激活(即当鼠标光标在按钮内时按下然后释放),当键入快捷键,或者当 click() 或 animateClick() 被调用时,会发出这个信号。值得注意的是,如果您调用 setDown()、setChecked() 或 toggle(),则不会发出此信号。
如果按钮是可选中的,如果按钮被选中,checked 为真, 如果未选中该按钮,则为 false。
我找不到它的原因。同时,“checked”和“unchecked”有什么区别?
顺便说一句,我通过按下鼠标左键并拖动光标来建立连接。另一种方法是右键单击对象,然后上下文菜单将显示“转到插槽”,但我的 Qt Designer(4.8.6) 不会。 如何处理?
3个问题希望得到帮助。非常感谢。
【问题讨论】:
-
我看不出你的第一个和第二个连接有什么区别。
-
对不起,它们被 clicked() 和 clicked(bool) 输入错误。
-
connect语句返回什么?它是否返回false? -
我看不出您提供的代码 sn-ps 不起作用的任何原因,因此您的问题的根源必须在其他地方找到。如果您希望得到有用的答案而不是猜测,请提供minimal reproducible example。如果您的应用程序有任何控制台输出,也会很有趣。并确保阅读并理解Signals & Slots documentation,然后再与他们搞混。
标签: qt click signals-slots