2017-04-03 86 views
0

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

我有一个文件userinterface.cpp具有2类MoveSeriesChart的2个对象:

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

Chart * CHART ; 
CHART = new Chart (this); 

在我userinterface.cpp我有ui.Diagramm作为Chart类型的对象。

现在我想有Chart沟通MoveSeries。我可以使用userinterface.cpp中的直接信号插槽吗?类似的东西

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

    ... 

或者我只能有MoveSeries <之间的信号 - 插槽 - >UserinterfaceChart < - >Userinterface

谢谢!

+3

你有没有试过你的解决方案?如果是这样,你知道答案(是的,你可以做到这一点) –

+0

是的,我已经尝试过,但它没有工作,所以这是我的第一个想法。现在我知道它可以工作,看来我对Thanky的参数有很大的问题! – user3443063

+0

是的,你可以。你甚至可以做信号连接信号。 它没有为你工作?你能告诉我们你的代码吗? 您确定MOVE_SERIES从QObject继承并定义了此插槽吗? (对于ui表单是否也有信号定义?) – Dmitriy

回答

3

您的解决方案有效,但写法错误,您无法在连接SIGNAL或SLOT调用上传递值,只是类型。

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) ; 

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