2016-09-29 26 views
1

我使用Qt Creator 3.3.1在设计模式下创建了一个pushButton并与设计者连接了按钮和信号按下的按钮()。它工作得很好,但有时,当我在按下的事件中设置一个pushButton来隐藏或显示或更改stacketWidget的索引时,信号pressed()会连续重复两次。我没有在代码中手动连接,但都是由设计者自动完成的。我正在使用Qt 4.8.6嵌入式。谢谢Qt不必要的双重执行pushButton按下的信号

void myclass::on_pushButton_1_pressed() 
{ 

qDebug("Pressed event"); 
ui->pushButton_2->hide(); //if I comment this line the pressed signal is not repeated twice 

} 
+0

我可以想像,在'pressed'信号的情况比较特殊。它可能在不同的平台上有不同的表现,因为它可能是底层操作系统的自发事件。例如。点击一个按钮,拖动并再次打开,将会发出两次(至少在Windows中)。特别是在修改用户界面时,我可以很好地想象这是另一次触发的。我猜你在这里基本没有运气......但是你真的需要'按'信号吗?也不会“点击”工作? –

回答

4

Qt设计人员形式有一个功能称为autoconnect。如果有一个名为on_{ObjectName}_{SignalName}的插槽,它会自动连接表单小部件的信号。

因此,您的插槽已连接两次,一次通过设计器中的连接,一次通过自动连接。

要么删除你的设计师连接或重命名插槽,以解决更多的呼叫

+0

我如何在设计师中删除我的连接?我只使用Qt Creator 3.3.1 – Memphis

+0

这有点奇怪,只有在按下信号时才会发生。释放和点击信号不会遭受这个问题。 – Memphis

+0

我假设你通过拖放在设计器中连接了信号。是这样吗?如果是这样,您只需在编辑信号和插槽模式中选择连接,然后将其删除(或通过底部的信号和插槽面板)。 –