2016-09-29 13 views
1

デザインモードでQt Creator 3.3.1でプッシュボタンを作成し、デザイナでボタンを信号押下()に接続しました。うまくいきますが、時には、押されたイベントにpushButtonを設定して、stacketWidgetのインデックスを表示または非表示にすると、pressed()というシグナルが連続して2回繰り返されます。コードに手動で接続する必要はありませんが、すべてがデザイナーによって自動的に実行されます。私はQt 4.8.6を使っています。ありがとうQtプッシュボタン押下信号の不要な二重実行

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

を解決するために、あなたのスロットの名前を変更するのどちらか。おそらく基盤となるOSの自発的なイベントであるため、異なるプラットフォームでは異なる動作をする可能性があります。例えば。ボタンをクリックすると、再び電源を入れ直すと、2回(Windowsでは少なくとも)それを出します。特にUIを変更するときに、これが別の時にトリガされると非常によく想像することができます。あなたは基本的にここから運が良かったと思います...しかし、本当に「押された」信号が必要ですか? 「クリックした」作業もできませんか? –

答えて

4

Qtデザイナーフォームにはautoconnectという機能があります。 on_{ObjectName}_{SignalName}というスロットがある場合は、フォームウィジェットの信号を自動的に接続します。

スロットはデザイナーで1回、自動接続で2回接続されます。

デザイナーで、あなたの接続を削除、または私は `pressed`信号は少し特別であることを想像することができ、追加のコール

+0

デザイナーで私の接続をどのように削除できますか?私はQt Creator 3.3.1でしか動作しません – Memphis

+0

ちょっと変わったですが、押された信号でのみ起こります。リリースされた信号とクリックされた信号にはこの問題はありません。 – Memphis

+0

ドラッグアンドドロップでデザイナーで信号を接続したとします。これは本当ですか?その場合は、Edit Signals&Slotsモードで接続を選択し、それを削除してください(または、下部のSignals&Slotsパネルから)。 –