Error with QList
-
hey thanks cincirin,for your reply,I declared the struct in class in mainwindow.h and made it public.No I am getting on error as list is not declared..So i declared it below way
QList<QString>list;But Now again I get a error
bq. error: 'const class QString' has no member named 'userName'
error: 'const class QString' has no member named 'password'regards
gogoi -
The line @QList<QString>list@ is ok. The problem is elsewhere in your code. Can you show the entire code ? Also why you include QList header twice ?
-
Hello cincirin
entire code i have pasted above only.I included headers twicw by mistake,sorry for that..
regards
gogoi -
Ok. I wrote a simple source code as follow:
@
struct Login {
QString userName;
QString password;
};
#include <QSettings>void 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(); login.password = settings.value("password").toString(); logins.append(login); } settings.endArray();
}
@This code work for me.
Also make sure you have included QList and QString headers.
-
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 -
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 -
Hi gogoi
you might have to be a little more specific on your error (message).
-
thanks all error is solved..
regards
gogoi -
Do you mind to enlight us?
How did you solve your problem? -
Her/His list variable was QList<QString> type and not QList<Login> type.
-
hey friends,can anybody help me out in how shall i append the username and passwd data into the list..
regards
gogoi -
"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);
@ -
ok thanks cincirin,I will read it and get back to u.
regards
gogoi -
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 -
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);
@ -
@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 -
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();
}
@ -
thanks cincirin...then how shall i write in writesettings function..because when i debug..the login size is showing zero only
regards
gogoi -
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. -
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