【发布时间】:2021-11-14 10:19:20
【问题描述】:
我需要将 QWebSocket 的 binaryMessageReceived 信号连接到修改 QByteData 的插槽
QByteData 可能很大,因此每次在可变变量中再次复制它可能真的很昂贵。我想重用现有的 QByteData
当我尝试使用以下插槽进行编译时
void route(QByteArray& msg);
我得到编译错误
/usr/include/qt/QtCore/qobject.h:255:9: error: static assertion failed: Signal and slot arguments are not compatible.
255 | Q_STATIC_ASSERT_X((QtPrivate::CheckCompatibleArguments<typename SignalType::Arguments, typename SlotType::Arguments>::value),
| ^~~~~~~~~~~~~~~~~
/usr/include/qt/QtCore/qobject.h:255:9: note: ‘(((int)QtPrivate::CheckCompatibleArguments<QtPrivate::List<const QByteArray&>, QtPrivate::List<QByteArray&> >::value) != 0)’ evaluates to false
但如果我将插槽更改为
void route(const QByteArray& msg);
它编译得很好
我正在像这样连接插槽:-
connect(this, &QWebSocket::binaryMessageReceived, this, &WSManager::route);
【问题讨论】:
标签: c++ qt constants signals-slots