Results 1 to 3 of 3

Thread: QSettings beginReadarray not returning the exact size.

  1. #1
    Join Date
    Feb 2010
    Posts
    8
    Qt products
    Qt4 Qt/Embedded
    Platforms
    Windows Symbian S60

    Default QSettings beginReadarray not returning the exact size.

    Hi ,

    I am trying to solve a bug. I am storing some values passed as an input by the user in QSettings array : I have the following code:

    void ServerManager::readSettings()
    {
    QStringList info;
    QList<QTreeWidgetItem*> favoriteList;
    settings->beginGroup("ServerManager");
    int size = settings->beginReadArray("ServerItems");

    // size value is zero whereas if I put a numeric value 5 below and see the qDebug values it has the strings in it.

    for (int i = 0; i < 5; ++i)
    {
    settings->setArrayIndex(i);
    info << settings->value("Servername").toString();
    info << settings->value("Server").toString();
    info << settings->value("Port").toString();
    info << settings->value("Game").toString();
    qDebug() << info ;
    QTreeWidgetItem *favoriteItem = new QTreeWidgetItem(ui->treeWidget, info);
    favoriteList.append(favoriteItem);
    favorites->addChildren(favoriteList);
    }
    settings->endArray();
    settings->endGroup();
    }

    The data is arranged like this :

    ("qwer", "qwer", "1234", "Battlefield 2")
    ("qwer", "qwer", "1234", "Battlefield 2", "abdc", "abdc", "1234", "Battlefield 2")

    ("qwer", "qwer", "1234", "Battlefield 2", "abdc", "abdc", "1234", "Battlefield 2",
    "bnmp", "nbmp", "1231", "Battlefield 2")

    ("qwer", "qwer", "1234", "Battlefield 2", "abdc", "abdc", "1234", "Battlefield 2",
    "bnmp", "nbmp", "1231", "Battlefield 2", "server12", "server21", "1231", "Battlefield 2")

    ("qwer", "qwer", "1234", "Battlefield 2", "abdc", "abdc", "1234", "Battlefield 2",
    "bnmp", "nbmp", "1231", "Battlefield 2", "server12", "server21", "1231", "Battlefield 2", "qwef", "qsdf", "1231", "Battlefield 2")


    I am writing the data in the Qsetting as follows:
    void ServerManager::writeSettings()
    {
    Servermanger *sme = new ServerMangerEdit() ;

    if (sme->exec() == QDialog::Accepted) {
    QStringList info;
    info << sme->getServername();
    info << sme->getServer();
    info << sme->getPort();
    info << sme->getGame();
    qDebug() << info ;

    settings->beginGroup("ServerManager");
    settings->beginWriteArray("ServerItems");
    settings->setArrayIndex(i);
    settings->setValue("Servername", sme->getServername());
    settings->setValue("Server", sme->getServer());
    settings->setValue("Port", sme->getPort() );
    settings->setValue("Game", sme->getGame());
    settings->endArray();
    settings->endGroup();

    QTreeWidgetItem *serverItem = new QTreeWidgetItem(ui->treeWidget, info);
    favorites->addChild(serverItem);
    favorites->setHidden(false);
    }

    Can Anyone tell me why the size is Zero even after adding the data . How to find the size of the QSettings array .

    Thanks

  2. #2
    Join Date
    Aug 2009
    Posts
    52
    Thanked 10 Times in 10 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: QSettings beginReadarray not returning the exact size.

    settings->value("ServerManager/ServerItems/size").toInt()
    will tell you the real size which written and read by QSettings array.

  3. #3
    Join Date
    Feb 2010
    Posts
    8
    Qt products
    Qt4 Qt/Embedded
    Platforms
    Windows Symbian S60

    Default Re: QSettings beginReadarray not returning the exact size.

    the above line is not returning the size.
    Also why the data is getting stored like the above , I want to store it like this :

    ("qwer", "qwer", "1234", "Battlefield 2")
    ("abdc", "abdc", "1234", "Battlefield 2")
    ("bnmp", "nbmp", "1231", "Battlefield 2")
    ("server12", "server21", "1231", "Battlefield 2")
    ("qwef", "qsdf", "1231", "Battlefield 2")


    Any Idea how to store the data like the above.


    ~Chinmaya

Similar Threads

  1. Set height of QTableView to fit exact number of rows.
    By Ben.Hines in forum Qt Programming
    Replies: 3
    Last Post: 17th January 2019, 01:49
  2. get exact height of a QString in pixels
    By zack in forum Qt Programming
    Replies: 1
    Last Post: 14th July 2010, 13:16
  3. problems with beginReadArray or maybe beginWriteArray
    By Alfredo in forum Qt Programming
    Replies: 2
    Last Post: 1st July 2010, 11:27
  4. exact region of drawn part
    By sanjayshelke in forum Qt Programming
    Replies: 1
    Last Post: 27th May 2008, 18:07
  5. QSettings - beginReadArray not working
    By Mike in forum Qt Programming
    Replies: 7
    Last Post: 9th January 2006, 21:24

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.