ボタンが押されたときに関数を呼び出す方法を作成者が示している YouTube の Qt チュートリアル シリーズを見てきました。彼は Qt Creator IDE のボタンを右クリックして [スロットに移動] を選択し、そこから生成された関数を起動するシグナルを選択しました。. 私は Netbeans での開発に慣れているので、組み込みの Qt Designer を使用して彼の例に従おうとしました。残念ながら、ボタンまたはウィジェットを右クリックしても、「スロットに移動...」というエントリはありません。もちろん、メイン ウィンドウ用の新しいスロットを作成し、ボタンの信号をそこに接続することもできますが、単一の機能でそれを行う方がはるかに便利でクリーンなように思えます。修正する方法はありますか、そうでない場合でも、少なくともコードを介して完全に行う方法はありますか? ご協力いただきありがとうございます。
質問する
4517 次
1 に答える
9
Netbeans の QtDesigner がこの機能を提供しない理由はわかりませんが、この機能が何をするかは知っています。ウィジェット クラスに特別な名前のスロットを作成するだけです。connect ステートメントを追加しないことに注意してください。次のように機能する自動接続機能を使用します。
名前がこのパターンに一致するスロットごとに:
void on_X_Y(...)
Y
という名前のオブジェクトの信号という名前に接続されますX
。したがって、 という名前の QPushButton がありbutton
、シグナルを処理したい場合pressed
は、次の署名でスロットを作成するだけです。
void on_button_pressed()
このスロットが信号にどのように接続されるのか疑問に思っている場合: これは、ui_...h
ファイルの最後に発生しますsetupUi()
:
QMetaObject::connectSlotsByName(WidgetName);
于 2012-09-01T13:23:50.977 に答える