Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt
  • Unsolved
Collapse
qtws26_logo

The Qt Event of the Year: Qt World Summit 2026

Save Your Spot >
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Error with QList
Qt 6.12 LTS is out! See what's new in the release blog

Error with QList

Scheduled Pinned Locked Moved General and Desktop
37 Posts 5 Posters 41.1k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • ? Offline
    ? Offline
    A Former User
    wrote on last edited by
    #7

    hey cincirin..I have also written the samething and the error is in savesettings function..
    below is my Mainwindow.h

    @#ifndef MAINWINDOW_H
    #define MAINWINDOW_H

    #include <QtGui/QMainWindow>
    #include <QSettings>
    #include <QList>
    #include <qlist.h>

    namespace Ui {
    class MainWindow;
    }

    class MainWindow : public QMainWindow
    {
    Q_OBJECT
    public:
    struct Login {
    QString userName;
    QString password;
    };

    enum ScreenOrientation {
        ScreenOrientationLockPortrait,
        ScreenOrientationLockLandscape,
        ScreenOrientationAuto
    };
    
    explicit MainWindow(QWidget *parent = 0);
    virtual ~MainWindow();
    
    // Note that this will only have an effect on Symbian and Fremantle.
    void setOrientation(ScreenOrientation orientation);
    
    void showExpanded();
    

    private slots:
    void on_set_clicked();

    private:
    Ui::MainWindow *ui;
    void readSettings();
    void saveSettings();
    };

    #endif // MAINWINDOW_H@

    regards
    gogoi

    1 Reply Last reply
    0
    • ? Offline
      ? Offline
      A Former User
      wrote on last edited by
      #8

      hello cincirin
      in the below function..
      I am getting error

      @void MainWindow::saveSettings()
      {

      QList <Login> logins;
      QList<QString> list;
       QSettings settings;
       settings.beginWriteArray("logins");
       for (int i = 0; i < logins.size(); ++i) {
           settings.setArrayIndex(i);
           settings.setValue("userName", list.at(i).userName);//error
           settings.setValue("password", list.at(i).password);//error
       }
       settings.endArray();
      

      }@

      regards
      gogoi

      1 Reply Last reply
      0
      • K Offline
        K Offline
        koahnig
        wrote on last edited by
        #9

        Hi gogoi

        you might have to be a little more specific on your error (message).

        Vote the answer(s) that helped you to solve your issue(s)

        1 Reply Last reply
        0
        • ? Offline
          ? Offline
          A Former User
          wrote on last edited by
          #10

          thanks all error is solved..

          regards
          gogoi

          1 Reply Last reply
          0
          • ? Offline
            ? Offline
            A Former User
            wrote on last edited by
            #11

            Do you mind to enlight us?
            How did you solve your problem?

            1 Reply Last reply
            0
            • ? Offline
              ? Offline
              A Former User
              wrote on last edited by
              #12

              Her/His list variable was QList<QString> type and not QList<Login> type.

              1 Reply Last reply
              0
              • ? Offline
                ? Offline
                A Former User
                wrote on last edited by
                #13

                hey friends,can anybody help me out in how shall i append the username and passwd data into the list..

                regards
                gogoi

                1 Reply Last reply
                0
                • ? Offline
                  ? Offline
                  A Former User
                  wrote on last edited by
                  #14

                  "see append function":http://doc.qt.nokia.com/latest/qlist.html#append
                  In your code ... :
                  @
                  QList<Login> loginsList;
                  Login login = {"userName", "password"};
                  loginsList.append(login);
                  @

                  1 Reply Last reply
                  0
                  • ? Offline
                    ? Offline
                    A Former User
                    wrote on last edited by
                    #15

                    ok thanks cincirin,I will read it and get back to u.

                    regards
                    gogoi

                    1 Reply Last reply
                    0
                    • ? Offline
                      ? Offline
                      A Former User
                      wrote on last edited by
                      #16

                      hey cincirin,
                      suppose i want to take username and password from userinput..then how shall i do it..
                      I mean..

                      QList<Login> loginsList;
                      Login login = {ui->lineEdit->text(), ui->lineEdit_2->text()};
                      loginsList.append(login);

                      regards
                      gogoi

                      1 Reply Last reply
                      0
                      • ? Offline
                        ? Offline
                        A Former User
                        wrote on last edited by
                        #17

                        Yes, it's ok.
                        Or, if you want to add more Logins in your list, create only one instance of Login
                        @
                        Login login;

                        login.userName = ui->lineEdit->text();
                        login.password = ui->lineEdit_2->text();
                        loginsList.append(login);

                        login.userName = ui->lineEdit->text();
                        login.password = ui->lineEdit_2->text();
                        loginsList.append(login);
                        @

                        1 Reply Last reply
                        0
                        • ? Offline
                          ? Offline
                          A Former User
                          wrote on last edited by
                          #18

                          @void MainWindow::readSettings()
                          {

                          QList<Login> logins;
                          
                             
                           QSettings settings;
                           int size = settings.beginReadArray("logins");
                           for (int i = 0; i < size; ++i) {
                               settings.setArrayIndex(i);
                               Login login;
                               login.userName = settings.value(("userName").toString(),ui->lineEdit->setText());
                               login.password = settings.value(("password").toString(),ui->lineEdit_2->settext());
                               
                               logins.append(login);
                           }
                           settings.endArray();
                          

                          }@

                          can i do it this way cincirin..

                          regards
                          gogoi

                          1 Reply Last reply
                          0
                          • ? Offline
                            ? Offline
                            A Former User
                            wrote on last edited by
                            #19

                            No, you can't.
                            You need to separate @QSettings::value@ from @QlineEdit::setText@
                            @
                            void MainWindow::readSettings()
                            {
                            QList<Login> logins;
                            QSettings settings;
                            int size = settings.beginReadArray("logins");
                            for (int i = 0; i < size; ++i) {
                            settings.setArrayIndex(i);
                            Login login;
                            login.userName = settings.value(("userName").toString();
                            ui->lineEdit->setText(login.userName));
                            login.password = settings.value(("password").toString();
                            ui->lineEdit_2->settext(login.password));

                                 logins.append(login);
                             }
                             settings.endArray();
                            

                            }
                            @

                            1 Reply Last reply
                            0
                            • ? Offline
                              ? Offline
                              A Former User
                              wrote on last edited by
                              #20

                              thanks cincirin...then how shall i write in writesettings function..because when i debug..the login size is showing zero only

                              regards
                              gogoi

                              1 Reply Last reply
                              0
                              • ? Offline
                                ? Offline
                                A Former User
                                wrote on last edited by
                                #21

                                In a similar manner as read settings.
                                But I think your problem is that you want to use the same list both in read & write settings. In this case, your problem C++ and not Qt. So, if I'm right, you need to declare QList<Login> member of your class, and not separate instances in read&write functions.

                                1 Reply Last reply
                                0
                                • ? Offline
                                  ? Offline
                                  A Former User
                                  wrote on last edited by
                                  #22

                                  ya i have not created two instance of QList<login>..
                                  please check out this

                                  @void MainWindow::saveSettings()
                                  {

                                   QSettings settings;
                                   settings.beginWriteArray("logins");
                                   for (int i = 0; i < logins.size(); ++i) {
                                       settings.setArrayIndex(i);
                                       settings.setValue("userName", list.at(i).userName);
                                       Login login;  
                                      ui->lineEdit->settext(login.userName);
                                  
                                       settings.setValue("password", list.at(i).password);
                                        ui->lineEdit_2->settext(login.password);
                                   }
                                   settings.endArray();
                                  

                                  }
                                  @

                                  regards
                                  gogoi

                                  1 Reply Last reply
                                  0
                                  • ? Offline
                                    ? Offline
                                    A Former User
                                    wrote on last edited by
                                    #23

                                    In your 10 and 13 lines, both line edits will have blank text. Use list.at(i) instead of local login variable.
                                    If your list is member of MainWindow class, or if it's global in MainWindow.cpp, your code should be ok, if you remove line 9.

                                    1 Reply Last reply
                                    0
                                    • ? Offline
                                      ? Offline
                                      A Former User
                                      wrote on last edited by
                                      #24

                                      hey thanks for the info..i did that,,but no effect ,my .ini file shows only this output..

                                      [logins]
                                      size=0

                                      regards
                                      gogoi

                                      1 Reply Last reply
                                      0
                                      • ? Offline
                                        ? Offline
                                        A Former User
                                        wrote on last edited by
                                        #25

                                        If you have @QList<Login> m_logins@ member in your MainWindow class, and if in read function you'll use m_logins.append, I'm sure that write function will write in ini file as many Login as you appended before.

                                        1 Reply Last reply
                                        0
                                        • ? Offline
                                          ? Offline
                                          A Former User
                                          wrote on last edited by
                                          #26

                                          No cincirin..I coded the 2 functions according to your suggestions..but its not entering the loop in the savesettings function..and everytime it says size=0;//
                                          so i think on click of a button we shouls set the username and passwd..
                                          this way..
                                          @void MainWindow::on_set_clicked()
                                          {

                                          login.userName=ui->lineEdit->text();
                                          login.password=ui->lineEdit_2->text();
                                          logins.append(login);
                                          

                                          }@

                                          i dont know whether i m right or wrong..u please just check out//

                                          regards
                                          gogoi

                                          1 Reply Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt
                                          • Unsolved