我有一台服务器和一台客户端,他们通过TCP连接(QTcpSocket和QTcpServer)。数据使用QByteArray发送。
void Receive::newConnection()
{
while (server->hasPendingConnections())
{
QTcpSocket *socket = server->nextPendingConnection();
connect(socket, SIGNAL(readyRead()), SLOT(readyRead()));
connect(socket, SIGNAL(disconnected()), SLOT(disconnected()));
QByteArray *buffer = new QByteArray();
qint32 *s = new qint32(0);
buffers.insert(socket, buffer);
sizes.insert(socket, s);
qDebug()<<buffer;
}
}
last line打印在服务器控制台的客户端中输入的文本。我想将缓冲区转换为QString。 (或者我想将它发送到qml文件)。所以,当我尝试:
QString receivedText = QTextCodec::codecForMib(1015)->toUnicode(buffer);
并告诉我错误:
no matching function for call to 'QTextCodec::toUnicode(QByteArray*&)'
receivedText = QTextCodec::codecForMib(1015)->toUnicode(buffer);
^
当使用fromAscii或fromStringC时,它表示它不是QString的成员。
我该怎么办?
答案 0 :(得分:1)
QString QTextCodec :: toUnicode(const QByteArray&amp; a)const
将此编解码器的编码转换为Unicode,并返回 导致QString。
从上面可以看出,需要引用而不是指针。在您的情况下,您应将其更改为:
QString receivedText = QTextCodec::codecForMib(1015)->toUnicode(*buffer);