信号/スロットエディタダイアログボックスを使用するときはいつでも、既存のスロットのリストから選択する必要があります。だから問題は、カスタムの名前付きスロットをどのように作成するかです。
残念ながら、これはQt4では不可能です。
Qt3では、カスタムスロットを作成して、ui.hファイルに実装することができます。ただし、Qt4はこのファイルを使用しないため、カスタムスロットはサポートされていません。
QtForum でこの問題に関するいくつかの議論があります
これはQtDesigner 4.5.2のバージョンでは可能であるように見えますが、Signal/Slot Editorのドックウィジェットからはできませんメインウィンドウで。
これは私のために働いたものです
警告:私はPyQtを使用していますが、この方法で追加されたスロットはC++からではなく、Pythonからのみ使用しようとしたため、マイレージが異なる場合があります...
メインウィンドウを右クリックし、「信号とスロットの変更」を選択して、新しいスロットを追加します。シグナルスロットエディタに表示されます。
私はそれを行うことができます:
MainWindow.hに、次の行を追加します。
public slots:
void example();
mainWindowクラスで。
MainWindow.cpp内
void MainWindow::example() {
<code>
}
QPushButton
のような既存のQtクラスにスロットを追加することになるため、これを行うことはできません。これは実際には方法ではありません。
最終的には、既存のものをサブクラス化して、独自のQWidget
を作成する必要があります。次に、提案されているように、プラグインとしてQtDesignerに統合します。独自のクラスを持つことで、必要に応じて使用可能な信号/スロットを追加/変更できます。
スロットの自動接続機能を忘れないでください。ウィジェットの名前を変更すると関数の名前を変更しなければならないなど、いくつかの欠点がありますが、私たちの会社ではそれらを頻繁に使用しています。
あなたはの魔法のスロットフォーマットを使用することができます
void on_objectName_signal() {
// slot code here, where objectname is the Qt Designer object name
// and the signal is the emission
}
このメソッドへの接続は、メソッド connectSlotsByName によって確立され、シグナルが発信されるたびに、このスロットが呼び出されます。
多分それは助けになるでしょう。
デフォルトでは、既存のスロットリストから選択する必要があります。ただし、デザイナの右側にあるリストでオブジェクトを右クリックし、[スロット/シグナル]を選択してカスタムスロット/シグナルを追加することで、スロットを追加できます。その後、シグナル/スロットエディタで選択できます。
右ボタンでウィジェットをクリックします
ウィジェットを定義したクラスにプロモートします
ウィジェットを右ボタンでもう一度クリックします
信号とスロットが編集可能であることがわかります