预处理器ifdef在file.h中

时间:2015-04-23 12:23:04

标签: c++ qt

我在Visual Express 2010上使用qt,c ++开发了一个程序,我使用了两个版本的qwt(qwt5和qwt6)

在我班级的.h文件中,我在include文件中添加了一个测试

我还对语句槽进行了测试(因为版本qwt5和qwt6之间的参数类型发生了变化)

这里是.h:

中的代码
#ifdef QWT6
    void leftPlotPickerSelected ( const QPointF& ); //qwt6
#else
    void leftPlotPickerSelected ( const QwtDoublePoint & ); // qwt5
#endif

在.cpp文件中,我还添加了如下测试:

#ifdef QWT6
connect ( m_pPlotPickerLeft, SIGNAL ( selected ( const QPointF&) ),SLOT ( leftPlotPickerSelected ( const QPointF&))  ); //qwt6
#else
connect ( m_pPlotPickerLeft, SIGNAL ( selected ( const QwtDoublePoint & ) ), SLOT ( leftPlotPickerSelected ( const QwtDoublePoint & ) ) ); //qwt5
#endif

当我通过调试运行程序时,与每个插槽的连接不起作用,并在输出中显示警告:

Warning: Object::connect: No such slot      classeA::leftPlotPickerSelected ( const QPointF&)
Warning: Object::connect:  (receiver name: 'classeABase')

但是当我在.h文件中的插槽语句中评论#endif时,连接效果很好,

我不知道为什么.h文件中的#endif测试会阻塞连接插槽?

你能帮帮我吗?提前谢谢。

0 个答案:

没有答案