Results 1 to 2 of 2

Thread: Store QVector to QDataStream problem

  1. #1
    Join Date
    Jun 2010
    Posts
    100
    Thanks
    13
    Thanked 1 Time in 1 Post
    Qt products
    Qt4
    Platforms
    Unix/X11

    Default Store QVector to QDataStream problem

    hi all!

    I need to store a QVector to send it via tcp/ip and then store it in a mysql database as a BLOB. I am getting an error and don't know how to handle it.

    this 2 function store and restore QVectors from a QByteArray.

    Qt Code:
    1. QByteArray EViewer::netArraySerialisation()
    2. {
    3. QByteArray dataBlock;
    4.  
    5. QDataStream dataStream(&dataBlock, QIODevice::WriteOnly);
    6. dataStream.setVersion(QDataStream::Qt_4_5);
    7.  
    8. dataStream << _NetArray;
    9.  
    10. return dataBlock;
    11. }
    12.  
    13. void EViewer::netArrayDeserialisation(QByteArray qb)
    14. {
    15. // create data block and related stream
    16. QByteArray dataBlock = qb;
    17.  
    18. QDataStream dataStream(&dataBlock, QIODevice::ReadOnly);
    19. dataStream.setVersion(QDataStream::Qt_4_5);
    20.  
    21. dataStream >> _NetArray;
    22. }
    To copy to clipboard, switch view to plain text mode 

    Error:

    src/srcFrw/DataObjects/EViewer.cpp:167: instantiated from here
    /usr/include/qt4/QtCore/qdatastream.h:292: error: no match for ‘operator>>’ in ‘s >> t’
    /usr/include/qt4/QtCore/qdatastream.h:132: note: candidates are: QDataStream& QDataStream::operator>>(qint8&)
    /usr/include/qt4/QtCore/qdatastream.h:206: note: QDataStream& QDataStream::operator>>(quint8&)
    /usr/include/qt4/QtCore/qdatastream.h:134: note: QDataStream& QDataStream::operator>>(qint16&)
    /usr/include/qt4/QtCore/qdatastream.h:209: note: QDataStream& QDataStream::operator>>(quint16&)
    /usr/include/qt4/QtCore/qdatastream.h:136: note: QDataStream& QDataStream::operator>>(qint32&)
    /usr/include/qt4/QtCore/qdatastream.h:212: note: QDataStream& QDataStream::operator>>(quint32&)
    /usr/include/qt4/QtCore/qdatastream.h:138: note: QDataStream& QDataStream::operator>>(qint64&)
    /usr/include/qt4/QtCore/qdatastream.h:215: note: QDataStream& QDataStream::operator>>(quint64&)
    /usr/include/qt4/QtCore/qdatastream.h:141: note: QDataStream& QDataStream::operator>>(bool&)
    /usr/include/qt4/QtCore/qdatastream.h:142: note: QDataStream& QDataStream::operator>>(float&)
    /usr/include/qt4/QtCore/qdatastream.h:143: note: QDataStream& QDataStream::operator>>(double&)
    /usr/include/qt4/QtCore/qdatastream.h:144: note: QDataStream& QDataStream::operator>>(char*&)
    /usr/include/qt4/QtCore/qchar.h:390: note: QDataStream& operator>>(QDataStream&, QChar&)
    /usr/include/qt4/QtCore/qbytearray.h:570: note: QDataStream& operator>>(QDataStream&, QByteArray&)
    /usr/include/qt4/QtCore/qstring.h:1063: note: QDataStream& operator>>(QDataStream&, QString&)
    /usr/include/qt4/QtCore/qregexp.h:146: note: QDataStream& operator>>(QDataStream&, QRegExp&)
    /usr/include/qt4/QtCore/qstringlist.h:245: note: QDataStream& operator>>(QDataStream&, QStringList&)
    /usr/include/qt4/QtCore/qlocale.h:671: note: QDataStream& operator>>(QDataStream&, QLocale&)
    /usr/include/qt4/QtCore/qtextstream.h:286: note: QTextStream& operator>>(QTextStream&, QTextStream& (*)(QTextStream&))
    /usr/include/qt4/QtCore/qvariant.h:498: note: QDataStream& operator>>(QDataStream&, QVariant&)
    /usr/include/qt4/QtCore/qvariant.h:500: note: QDataStream& operator>>(QDataStream&, QVariant::Type&)
    /usr/include/qt4/QtCore/qurl.h:270: note: QDataStream& operator>>(QDataStream&, QUrl&)
    /usr/include/qt4/QtCore/quuid.h:183: note: QDataStream& operator>>(QDataStream&, QUuid&)
    /usr/include/qt4/QtCore/qbitarray.h:164: note: QDataStream& operator>>(QDataStream&, QBitArray&)
    /usr/include/qt4/QtCore/qdatetime.h:316: note: QDataStream& operator>>(QDataStream&, QDate&)
    /usr/include/qt4/QtCore/qdatetime.h:318: note: QDataStream& operator>>(QDataStream&, QTime&)
    /usr/include/qt4/QtCore/qdatetime.h:320: note: QDataStream& operator>>(QDataStream&, QDateTime&)
    /usr/include/qt4/QtCore/qpoint.h:104: note: QDataStream& operator>>(QDataStream&, QPoint&)
    /usr/include/qt4/QtCore/qpoint.h:236: note: QDataStream& operator>>(QDataStream&, QPointF&)
    /usr/include/qt4/QtCore/qline.h:206: note: QDataStream& operator>>(QDataStream&, QLine&)
    /usr/include/qt4/QtCore/qline.h:417: note: QDataStream& operator>>(QDataStream&, QLineF&)
    /usr/include/qt4/QtCore/qsize.h:102: note: QDataStream& operator>>(QDataStream&, QSize&)
    /usr/include/qt4/QtCore/qsize.h:253: note: QDataStream& operator>>(QDataStream&, QSizeF&)
    /usr/include/qt4/QtCore/qrect.h:200: note: QDataStream& operator>>(QDataStream&, QRect&)
    /usr/include/qt4/QtCore/qrect.h:622: note: QDataStream& operator>>(QDataStream&, QRectF&)
    make[1]: *** [debug/EViewer.o] Error 1
    make: *** [debug] Error 2
    Is there a standard way to convert QVectors?

  2. #2
    Join Date
    Mar 2009
    Location
    Brisbane, Australia
    Posts
    7,729
    Thanks
    13
    Thanked 1,610 Times in 1,537 Posts
    Qt products
    Qt4 Qt5
    Platforms
    Unix/X11 Windows
    Wiki edits
    17

    Default Re: Store QVector to QDataStream problem

    If the value objects stored in your QVector implement operator<<() and operator>>() as described in the docs then QVector looks after it for you. If they don't implement the QDataStream support operators (as yours seem not to) then you need to do it manually.

    If you need to do it manually then write an element count, and then serialise each item in turn.

Similar Threads

  1. Store QList<T> in QVariant and stream to QDataStream?
    By razvan.petru in forum Qt Programming
    Replies: 3
    Last Post: 18th September 2009, 09:10
  2. QVector.push_back problem...
    By luche in forum Newbie
    Replies: 2
    Last Post: 11th January 2009, 02:22
  3. Problem regarding QVector
    By sudheer168 in forum Qt Programming
    Replies: 1
    Last Post: 6th December 2008, 11:56
  4. Problem with qvector
    By zorro68 in forum Qt Programming
    Replies: 1
    Last Post: 23rd February 2008, 01:02
  5. QVector problem
    By kingslee in forum Qt Programming
    Replies: 5
    Last Post: 19th October 2006, 10:42

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.