Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt中的Has-a关系和信号_C++_Qt - Fatal编程技术网

C++ Qt中的Has-a关系和信号

C++ Qt中的Has-a关系和信号,c++,qt,C++,Qt,我是Qt开发的新手,我们的设计在几个地方使用了has-a关系。在某些情况下,容器应该公开内部对象的信号,然后我已经为每个这样的信号编写了一个专用插槽,在这里我实际上再次发出信号。Qt中是否有一些捷径可以帮助暴露容器上内部对象的信号?您不必创建重新发送信号的插槽,您可以将一个信号与另一个信号连接起来。这样可以避免插槽定义 所以在你的容器里,你会有这样的东西: connect(object, SIGNAL(signal1()), this, SIGNAL(signal1())); 当然,您必须重新

我是Qt开发的新手,我们的设计在几个地方使用了has-a关系。在某些情况下,容器应该公开内部对象的信号,然后我已经为每个这样的信号编写了一个专用插槽,在这里我实际上再次发出信号。Qt中是否有一些捷径可以帮助暴露容器上内部对象的信号?

您不必创建重新发送信号的插槽,您可以将一个信号与另一个信号连接起来。这样可以避免插槽定义

所以在你的容器里,你会有这样的东西:

connect(object, SIGNAL(signal1()), this, SIGNAL(signal1()));
当然,您必须重新定义容器上的信号


有关更多详细信息,请检查

您不必为重新发送信号创建插槽,您可以将一个信号与另一个信号连接起来。这样可以避免插槽定义

所以在你的容器里,你会有这样的东西:

connect(object, SIGNAL(signal1()), this, SIGNAL(signal1()));
当然,您必须重新定义容器上的信号

有关更多详细信息,请查看以下网址中的

您可以将任意多个信号连接到单个插槽,并且可以根据需要将信号连接到任意多个插槽。甚至可以将一个信号直接连接到另一个信号。这将在第一个信号发出时立即发出第二个信号

以下是合法的:

connect(sender, SIGNAL(originalSignal()), SIGNAL(newSignal()));
从:

您可以将任意多个信号连接到单个插槽,并且可以根据需要将信号连接到任意多个插槽。甚至可以将一个信号直接连接到另一个信号。这将在第一个信号发出时立即发出第二个信号

以下是合法的:

connect(sender, SIGNAL(originalSignal()), SIGNAL(newSignal()));

若它是你们的类的内部结构,为什么你们不让它成为你们的类的朋友呢。然后您可以在内部结构调用中直接发出parentObj->signal

如果它是类的内部结构,为什么不让它成为类的朋友呢。然后,您可以在内部结构中直接调用emit parentObj->signal

重新发送信号也允许重新发送多个信号

testclass.h:

main.cpp:


结果是在这种情况下,插槽被调用两次。

信号的重新发射也允许重新发射多个信号

testclass.h:

main.cpp:

结果是在这种情况下,插槽被调用了两次