私はQtで開発するのが初めてで、私たちのデザインはいくつかの場所でhas-a関係を使用しています。これらのケースの中には、コンテナが内部オブジェクトの信号を公開する必要があります。そして、私は現在、このような信号ごとにプライベートスロットを作成しています。実際には、再度信号を再発光します。 Qtには、内部オブジェクトの信号をコンテナに公開するのに役立つショートカットがありますか?Qtでの関係とシグナル
1
A
答えて
5
信号を再発信するためのスロットを作成する必要はなく、別の信号と信号を接続することもできます。こうすることで、スロット定義を回避できます。もちろん
connect(object, SIGNAL(signal1()), this, SIGNAL(signal1()));
あなたは、コンテナ上の信号を再定義する必要があります。
は、だからあなたの容器の中に、あなたはこのようなものを持っているでしょう。詳細については
5
を確認してください。
あなたは、単一のスロットに必要な数の信号を接続することができ、かつ信号があなたのように多くのスロットに接続することができます必要。信号を別の信号に直接接続することも可能です。 (これは、最初は放出され、すぐにいつでも第2の信号を発します。)
次は合法です:
connect(sender, SIGNAL(originalSignal()), SIGNAL(newSignal()));
-1
それはあなたのクラスの内部構造である場合は、なぜあなたはそれの友人ことはありませんクラス。その後、内部構造体の内部で直接呼び出すことができますemit parentObj->signal()
0
信号の再発光により、複数の信号を再放射することもできます。
testclass.h:
#include <QObject>
#include <QDebug>
class TestClass : public QObject
{
Q_OBJECT
public:
explicit TestClass(QObject *parent = 0)
{
connect(this, SIGNAL(signal1()), this, SIGNAL(signal2()));
connect(this, SIGNAL(signal1()), this, SIGNAL(signal2()));
connect(this, SIGNAL(signal2()), this, SLOT(slot()));
}
void emitSignal1()
{
emit signal1();
}
signals:
void signal1();
void signal2();
public slots:
void slot()
{
qDebug() << "SLOT HAS BEEN CALLED";
}
};
main.cppに:
#include <QCoreApplication>
#include "testclass.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
TestClass instance;
instance.emitSignal1();
return a.exec();
}
結果、スロットが、この場合には2回呼び出されていることです。
関連する問題
- 1. QToolButtonシグナルとスロット - QT
- 2. Qtシグナル/スロットとスレッド
- 3. Qt、クライアントとサーバーの関係
- 4. Qtシグナル/スロットとC++ラムダ式
- 5. コール関数は直接シグナルを発信します。(Qt - シグナルとスロット)
- 6. Qtのシグナルとスロット、スレッド、(app.exec)、および関連するクエリ
- 7. 初心者のQtシグナルとスロット質問
- 8. Qtシグナルと継承に関する質問
- 9. QTスレッディング、シグナルの順序
- 10. パラメータとしてenumを持つQtシグナル
- 11. Qt C++のシグナルとスロットで削除された関数エラーを使用する
- 12. ifdefで包まれたQtシグナル
- 13. Qt 4.5 .NET Frameworkの依存関係
- 14. qtシグナル未定義の参照エラー
- 15. Qtデザイナーに直接Python関数をシグナルとして適用する
- 16. Qt :: QueuedConnectionによるシグナル実行順序
- 17. QtとPython、シグナルとスロットを設定する場所
- 18. Qt/C++:QListWidgetItemがチェックされたときのシグナル?
- 19. Gtk +コールバック関数とシグナルの助け
- 20. クラス変数Qtシグナルとスロットを更新する
- 21. なぜこのQTアプリはSIGABRTシグナルで終了しますか?
- 22. カスタム関係名とのHABTM関係
- 23. Laravelピボットテーブルとの関係、関係
- 24. Qtとvariadic関数
- 25. qt作成者がLinuxシグナルで停止する
- 26. Qt未定義の静的ライブラリの依存関係へ
- 27. Qtの2つのプラグインのシグナル/スロットの相互作用
- 28. Qtの依存関係が見つかりません
- 29. 接続ステートメントのQtシグナルのペイロードにアクセスする
- 30. Qt、MainWindow用の新しいオブジェクト、アプリケーションクラッシュ、finished()シグナルの出力方法
あなたはあなたのdownvoteについて説明しますか? –