C++ Qt按钮按下信号的不必要双重执行

C++ Qt按钮按下信号的不必要双重执行,c++,qt,C++,Qt,我使用Qt Creator 3.3.1在设计模式下创建了一个按钮,并使用designer将按钮与按下的信号连接()。它工作正常,但有时,当我在按下事件中设置一个按钮来隐藏、显示或更改stacketWidget的索引时,信号pressed()会连续重复两次。我在代码中没有手动连接,但这都是由设计器自动完成的。我正在使用Qt4.8.6嵌入式。谢谢 void myclass::on_pushButton_1_pressed() { qDebug("Pressed event"); ui->pu

我使用Qt Creator 3.3.1在设计模式下创建了一个按钮,并使用designer将按钮与按下的信号连接()。它工作正常,但有时,当我在按下事件中设置一个按钮来隐藏、显示或更改stacketWidget的索引时,信号pressed()会连续重复两次。我在代码中没有手动连接,但这都是由设计器自动完成的。我正在使用Qt4.8.6嵌入式。谢谢

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

}

Qt设计器窗体有一个名为的功能。如果在{ObjectName}{SignalName}上有一个名为
的插槽,它会自动连接表单小部件的信号

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


请在designer中删除连接,或重命名插槽以解决附加呼叫

Qt designer窗体具有名为的功能。如果在{ObjectName}{SignalName}
上有一个名为
的插槽,它会自动连接表单小部件的信号

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


在designer中删除连接,或重命名插槽以解决附加呼叫

如何在designer中删除连接?我只使用Qt creator3.3.1,这有点奇怪,只是它发生在按下的信号上。释放和单击信号不会出现此问题。我假设您在designer中通过拖放连接了该信号。是这样吗?如果是这样,您只需在编辑信号和插槽模式下选择连接,然后将其删除(或通过底部的信号和插槽面板)。@孟菲斯在您喜爱的编辑器中打开
.ui
文件。此外,您不需要局限于Qt Creator 3.3.1:Qt Creator的版本与其工具包中使用的Qt版本没有任何关系。您可以将最新的Qt Creator与任何版本的Qt4或Qt5一起使用。事实上,您通常会在多个版本和构建共存的情况下使用它。在设计器模式下,我右键单击按钮并选择“转到插槽”,然后选择插槽。这正是我使用按钮所做的,如何在设计器中删除我的连接?我只使用Qt Creator 3.3.1,这有点奇怪,只是它发生在按下的信号上。释放和单击信号不会出现此问题。我假设您在designer中通过拖放连接了该信号。是这样吗?如果是这样,您只需在编辑信号和插槽模式下选择连接,然后将其删除(或通过底部的信号和插槽面板)。@孟菲斯在您喜爱的编辑器中打开
.ui
文件。此外,您不需要局限于Qt Creator 3.3.1:Qt Creator的版本与其工具包中使用的Qt版本没有任何关系。您可以将最新的Qt Creator与任何版本的Qt4或Qt5一起使用。事实上,您通常会在多个版本和构建共存的情况下使用它。在设计器模式下,我右键单击按钮并选择“转到插槽”,然后选择插槽。这正是我用按钮所做的。我可以想象,按下的
信号有点特殊。它可能在不同的平台上表现不同,因为它可能是底层操作系统的自发事件。例如,点击一个按钮,反复拖动,将发出两次(至少在Windows中)。特别是在修改UI时,我可以很好地想象这是另一次触发的。我猜你在这里基本上不走运。。。但是您真的需要按下
信号吗?点击的
也会起作用吗?我可以想象按下的
信号有点特别。它可能在不同的平台上表现不同,因为它可能是底层操作系统的自发事件。例如,点击一个按钮,反复拖动,将发出两次(至少在Windows中)。特别是在修改UI时,我可以很好地想象这是另一次触发的。我猜你在这里基本上不走运。。。但是您真的需要按下
信号吗?单击的
也会起作用吗?