Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.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++ 不同类别的2个对象之间的信号/插槽_C++_Qt_Signals Slots - Fatal编程技术网

C++ 不同类别的2个对象之间的信号/插槽

C++ 不同类别的2个对象之间的信号/插槽,c++,qt,signals-slots,C++,Qt,Signals Slots,我有一个关于信号槽的问题: 我有一个文件userinterface.cpp,它有两个类的对象MoveSeries和Chart: MoveSeries * MOVE_SERIES ; MOVE_SERIES = new MoveSeries( this); 及 在我的userinterface.cpp中,我将ui.diagram作为类型为Chart的对象 现在我想让图表与MoveSeries通信。我可以用userinterface.cpp中的直接信号插槽来完成吗?诸如此类: Userinte

我有一个关于信号槽的问题:

我有一个文件
userinterface.cpp
,它有两个类的对象
MoveSeries
Chart

MoveSeries * MOVE_SERIES  ;
MOVE_SERIES = new MoveSeries( this);

在我的
userinterface.cpp
中,我将
ui.diagram
作为类型为
Chart
的对象

现在我想让
图表
MoveSeries
通信。我可以用
userinterface.cpp
中的直接信号插槽来完成吗?诸如此类

 Userinterface.cpp:
   .
   .
   .
    connect(   ui.Diagram   , SIGNAL( send_BarValue( double val   )),
               MOVE_SERIES  , SLOT( on_BarValueReceived (double val) )) ;

   ...
或者我只能在
MoveSeries
Userinterface
Chart
Userinterface
之间设置信号槽吗


谢谢大家!

您的解决方案是可行的,但它的编写方式是错误的,您无法在连接信号或插槽调用上传递值,只能传递类型

 connect(ui.Diagram   , SIGNAL( send_BarValue(double)),
           MOVE_SERIES    ,SLOT( on_BarValueReceived (double) )) ;
但这也很糟糕,这是Qt4风格的连接,它可以编译和运行,但是如果您在那里输入了错误的内容,那么在构建tyme中不会出现错误

首选使用新的信号/插槽语法:

 connect(   ui.Diagram   , &DiagramClass::end_BarValue,
           MOVE_SERIES    ,&MOVE_SERIESClass::on_BarValueReceived) ;

这样,将在编译时检查连接,减少可能遇到的问题数量。

您的解决方案可以工作,但写入方式错误,您无法在连接信号或插槽调用上传递值,只能传递类型

 connect(ui.Diagram   , SIGNAL( send_BarValue(double)),
           MOVE_SERIES    ,SLOT( on_BarValueReceived (double) )) ;
但这也很糟糕,这是Qt4风格的连接,它可以编译和运行,但是如果您在那里输入了错误的内容,那么在构建tyme中不会出现错误

首选使用新的信号/插槽语法:

 connect(   ui.Diagram   , &DiagramClass::end_BarValue,
           MOVE_SERIES    ,&MOVE_SERIESClass::on_BarValueReceived) ;

这样,将在编译时检查连接,减少可能遇到的问题。

您尝试过解决方案吗?如果是的话,你知道答案(是的,你可以这么做)是的,我试过了,但没有成功,所以这是我的第一个想法。现在我知道它可以工作了,看来我的参数有问题,谢谢!是的,你可以。您甚至可以进行信号到信号的连接。它对你不起作用?你能给我们看看你的密码吗?是否确定MOVE_SERIES继承自QObject并定义了此插槽?(与ui表单相同,它是否定义了信号?)。通常连接问题(不存在插槽等)会在运行时记录到控制台,您也可以查看一下。您是否尝试过解决方案?如果是的话,你知道答案(是的,你可以这么做)是的,我试过了,但没有成功,所以这是我的第一个想法。现在我知道它可以工作了,看来我的参数有问题,谢谢!是的,你可以。您甚至可以进行信号到信号的连接。它对你不起作用?你能给我们看看你的密码吗?是否确定MOVE_SERIES继承自QObject并定义了此插槽?(与ui表单相同,它是否定义了信号?)。通常连接问题(不存在插槽等)会在运行时记录到控制台,您也可以查看一下。