2017-07-08 12 views
0

私はサーバーとクライアントを持っており、TCP(QTcpSocketとQTcpServer)で接続しています。 QByteArrayを使用してデータが送信されます。QByteArrayとQStringの変換に関する問題

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は、サーバーのコンソールでclientに入力されたテキストを出力します。バッファをQStringに変換したい。 (または、qmlファイルに送信したい)。それはQStringのメンバーではないと言うfromStringC fromAsciiを使用した場合

no matching function for call to 'QTextCodec::toUnicode(QByteArray*&)' 
     receivedText = QTextCodec::codecForMib(1015)->toUnicode(buffer); 
                ^

か:

QString receivedText = QTextCodec::codecForMib(1015)->toUnicode(buffer); 

を、私にエラーを与える:私はしようとします。

どうすればよいですか? documentationによれば

答えて

1

QStringのQTextCodec ::のToUnicode(CONST QByteArray & a)はCONST

このコーデックのエンコーディングからUnicodeに変換し、そして内 結果を返しますQString。

上記から、参照は必要であり、ポインタは必要ではないということになります。あなたの場合は、次のように変更する必要があります:

QString receivedText = QTextCodec::codecForMib(1015)->toUnicode(*buffer); 
+0

働く - ありがとう – Someone

関連する問題