我有一个关于信号槽的问题:
我有一个文件userinterface.cpp
,其中包含2个类MoveSeries
和Chart
的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
< - >之间只有信号槽。 Userinterface
和Chart
< - > Userinterface
?
谢谢!
答案 0 :(得分:3)
您的解决方案有效,但是以错误的方式编写,您无法在连接SIGNAL或SLOT调用上传递值,只是类型。
connect(ui.Diagram , SIGNAL( send_BarValue(double)),
MOVE_SERIES ,SLOT( on_BarValueReceived (double) )) ;
但这也很糟糕,这是Qt4样式连接,它会编译运行,但如果你错误输入任何东西,你就不会在构建版本中出错。
更喜欢使用新的Signal / Slot语法:
connect( ui.Diagram , &DiagramClass::end_BarValue,
MOVE_SERIES ,&MOVE_SERIESClass::on_BarValueReceived) ;
这样就可以对连接进行编译时检查,从而减少可能遇到的问题数量。