我有一个关于信号槽的问题:
我有一个文件userinterface.cpp
,其中包含 2 个类的 2 个对象MoveSeries
和Chart
:
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
之间设置信号插槽吗?
谢谢!
您的解决方案有效,但它以错误的方式编写,您无法在连接信号或插槽调用上传递值,只能传递类型。
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) ;
这样,将进行编译时检查连接,从而减少您可能遇到的问题数量。