Qt Qwt和boost::信号

Qt Qwt和boost::信号,qt,boost,compiler-errors,signals,qwt,Qt,Boost,Compiler Errors,Signals,Qwt,我的项目同时使用Qt(包括Qwt)和Boost::signals。众所周知,它们的宏彼此不兼容。我用CONFIG+=no_关键字编译了我的项目,并用大写注册表重命名了所有Qt宏,即signals=Q_signals。项目中不再有错误,但现在我在Qwt包含中有这样的错误 /usr/include/qwtplot3d/qwt3d_extglwidget.h:101:1: error: ‘signals’ does not name a type /usr/include/qwtplot3d/qwt3

我的项目同时使用Qt(包括Qwt)和Boost::signals。众所周知,它们的宏彼此不兼容。我用
CONFIG+=no_关键字
编译了我的项目,并用大写注册表重命名了所有Qt宏,即
signals=Q_signals
。项目中不再有错误,但现在我在Qwt包含中有这样的错误

/usr/include/qwtplot3d/qwt3d_extglwidget.h:101:1: error: ‘signals’ does not name a type /usr/include/qwtplot3d/qwt3d_extglwidget.h:116:8: error: expected ‘:’ before ‘slots’ /usr/include/qwtplot3d/qwt3d_extglwidget.h:116:8: error: ‘slots’ does not name a type /usr/include/qwtplot3d/qwt3d_extglwidget.h:101:1:错误:“信号”未命名类型 /usr/include/qwtplot3d/qwt3d_extglwidget.h:116:8:错误:在“插槽”之前应为“:” /usr/include/qwtplot3d/qwt3d_extglwidget.h:116:8:错误:“插槽”未命名类型
Qwt似乎仍然与Boost::signals相冲突。我能在这里做什么?

Qwt与升压信号兼容-您正在谈论一个名为QwtPlot3D的库


当您想在QwtPlot3D中使用boost信号时,必须对其实现进行修补,以替换signal/slot/emit宏,就像您在代码中所做的那样

你是说旧的增压信号还是增压信号?我在Qt中使用了后者,没有遇到任何问题。是的,我使用的是旧版本的Boost::signals 1.46和Qt 4.7.4,考虑到正在迁移到Boost.Signals2。它没有上述问题,并且提供了更好的插槽跟踪机制。好的,我会试试,谢谢。改用boost::signals2::connection。我知道这个变体,但正在尝试另一个决定。现在,我正在尝试这样做:#未定义QT_NO_关键字#包括#定义QT_NO_关键字NO_关键字并使用CONFIG+=NO_关键字sbtw编译项目,不仅qwtplot3d,而且qwt的其他部分,即:/usr/include/qwt/qwt_picker.h:290:1:错误:“信号”没有命名类型。先前的建议没有帮助。qwt_picker.h中有问题的行来自非常过时的qwt 5.2。Qwt的最新版本不再使用冲突的关键字。但是,当您查看Qwt 5.2的admin目录时,您会发现一个脚本可以执行您需要的重命名(在您有sed可用的系统上)。你可以在QwtPlot3D文件中使用它。好吧,我会试试这个,但是现在我正在使用rpmbuild和mock来重建qwt。我用sed修改了所有宏。让我们看看会发生什么。