我正在使用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()而不是点击(bool)。 为什么我不能使用clicked()? 我通过Qt助理了解:
void QAbstractButton :: clicked(bool checked = false)[signal]
当按钮被激活(即按下然后在鼠标光标位于按钮内部时释放),键入快捷键或调用click()或animateClick()时,会发出此信号。值得注意的是,如果调用setDown(),setChecked()或toggle(),则不会发出此信号。
如果按钮是可检查的,如果选中该按钮,则选中该选项, 如果未选中该按钮,则为false。
我找不到它的原因。与此同时,"检查"的差异是什么?和"未选中"?
顺便说一下,我按下鼠标左键并拖动光标建立连接。另一种方法是右键单击该对象,然后上下文菜单将会转到插槽"但是我的Qt Designer(4.8.6)不会。 如何处理?
3个问题希望得到帮助。非常感谢提前。
答案 0 :(得分:0)
我不确定我是否真的理解了这个问题,但你无法连接到(see docs)。 clicked()
信号的原因是因为没有这样的东西......功能简介是清楚clicked(bool)
Qt只能在无法连接信号/插槽(qWarning到stderr)时显示运行时错误,在编译时并不明显。尝试检查程序输出是否有警告。
编辑:删除了误导性信息。
答案 1 :(得分:-1)
我也遇到了同样的现象。 我认为clicked(bool)和clicked(bool = false)是不同的。 信号有不同的事件。 我猜您的“ myslot()”可能会触发第二个事件。