私はPyQtのアプリケーションを開発しました。私は信号スロットモデルが好きですが、信号のエミッタを決定する方法はありますか? 私はそこに方法があることを願っています。なぜなら、それぞれの類似した信号のスロットをたくさん定義することなく、より一般的なコードを書くことができるからです。誰が信号を発信したのかを決定する方法は?
答えて
私は自分でGoogleで答えを見つけたので、私は早すぎる質問を開いたと思います。スロットは、エミッタによって活性化されると は、エミッタのポインタが格納され、及び
QObject::sender()
によって取得することができ、その結果によってPyQtはでアクセスすることができる:これはないこと
@QtCore.pyqtSlot()
def someSlot(self):
self.sender()
この機能を使用する前に、ドキュメントに記載されていることに注意する必要があります。http://doc.qt.nokia.com/4.7/qobject.html#sender –
ここでは、更新されたリンクです:https:// qt-project .org/doc/qt-4.7/qobject.html#sender – neuronet
注たとえばあなたに教えてください。グリッドコントロールのどのセルが編集されましたか?グリッドコントロールだけが処理します。
それはint型のいずれかを関連付けるための手段を提供してあなたは、QSignalMapperクラスに見たいと思うかもしれません
をルーティングする高度な信号/スロットに関する詳細の多くに入る新しい高度なQtのブックアウトがあり、文字列、またはウィジェットのパラメタを、指定されたシグナルを送信するオブジェクトに送信します。主な制限は、マッピングされる信号/スロットがパラメータなしである必要があることです。 QT4.7 documentationから
C++の例:私は、私は簡単なPyQT4例を追加しようとするでしょう機会を持っている場合
ButtonWidget::ButtonWidget(QStringList texts, QWidget *parent)
: QWidget(parent)
{
signalMapper = new QSignalMapper(this);
QGridLayout *gridLayout = new QGridLayout;
for (int i = 0; i < texts.size(); ++i) {
QPushButton *button = new QPushButton(texts[i]);
connect(button, SIGNAL(clicked()), signalMapper, SLOT(map()));
signalMapper->setMapping(button, texts[i]);
gridLayout->addWidget(button, i/3, i % 3);
}
connect(signalMapper, SIGNAL(mapped(const QString &)),
this, SIGNAL(clicked(const QString &)));
setLayout(gridLayout);
}
ただし、PyQT4例hereを見つけることができます。
- 1. WMP EventDispatcher:誰がイベントを送信したかを知る方法?
- 2. PyQt - 信号をシミュレートする方法は?または他の解決策?
- 3. 信号を送信するとコアダンプが発生します
- 4. QTimerは、指定された間隔で信号を発信しません
- 5. Twilioで未知のCallerIdとして発信番号を設定する方法
- 6. メールサーバーが受信者の電子メールアドレスを決定する方法
- 7. オーディオ信号にゼロローカル信号を得る良い方法はありますか?
- 8. 信号をASK(Amplitude Shift Keying)信号で変調する方法
- 9. インテントの結果、誰がそれを送信したかを知る方法?
- 10. 残り信号を使用した信号信号
- 11. 発信番号
- 12. 着信を決定する方法はローカルまたはSTDまたはISD
- 13. javascriptからqmlに信号を送信する方法
- 14. Android:電話から信号を送受信する方法
- 15. 失敗した信号/スロット接続をデバッグする方法は?
- 16. ウェブページへの信号の送信方法
- 17. Chromeのコールスタックに発信者が表示されないJavascript機能の発信者が誰であるかを知る方法はありますか?
- 18. MATLABの信号データから周波数を決定
- 19. フォームを送信するURLを決定する方法
- 20. ストリームが完了したBehaviorSubjectに信号を送る方法
- 21. Python Requests、発信トラフィックのポートを指定する方法は?
- 22. コンピューティングと通信の比率を決定する方法
- 23. 解決方法SMSを受信する際にエラーが発生する
- 24. Twilio発信者番号(発信)内線番号
- 25. Popen終了時に信号を受信する方法はありますか?
- 26. 着信中に発信者の番号を変更する
- 27. 方形波アナログ信号またはデジタル信号
- 28. 信号の比較方法
- 29. 着信番号または発信番号とすべてのログの詳細を取得する方法はありますか?
- 30. Tridion 2009 - 誰がページを公開したか決定する
私は、誰かがスロット内の送信者に関する情報を要求するとコードがより*一般的になると言うのを聞いて本当に驚いています。一般に、スロットは、どのように起動されたかについての知識を必要としないように書かれている(すなわち、直接的にも方法として呼び出すことができる)。 –