Why do not I get the values of the .ini file loaded in the corresponding layout?

0
Login::Login(QWidget *parent) :
    QWidget(parent)
{

qsettings=new QSettings(QString(":/config/config.ini"), QSettings::IniFormat);
Login::setWindowModality(Qt::ApplicationModal);
Login::setWindowIcon(QIcon(":/config/images/logos/login.png"));
Login::setWindowTitle("Login");
//server="193.147.83.170";
//port=QString::number(5432);
//database="dgt";
QString database=qsettings->value("bd","").toString();
QString server=qsettings->value("server","").toString();
QString port=qsettings->value("port","").toString();

shortcut = new QShortcut(QKeySequence("Return"),this);
connect(shortcut, SIGNAL(activated()), this, SLOT(on_btnConectar_clicked()));

mainLayout=new QVBoxLayout(this);
mainLayout->setGeometry( QRect( 25, 50, 1052, 720 ) );
verticalLayout=new  QVBoxLayout();
labelDatabase= new QLabel();

labelDatabase->setText( tr( "Database"  ));
labelDatabase->setAlignment(Qt::AlignCenter);
lineDatabase = new QLineEdit();
lineDatabase->setAlignment(Qt::AlignCenter);

lineDatabase->setText(database);

labelHost= new QLabel();

labelHost->setText( tr( "Server"  ) );
labelHost->setAlignment(Qt::AlignCenter);

lineHost = new QLineEdit();
lineHost->setAlignment(Qt::AlignCenter);

lineHost->setText(server);

labelPort= new QLabel();

labelPort->setText( tr( "Port"  ) );
labelPort->setAlignment(Qt::AlignCenter);
linePort = new QLineEdit();
linePort->setAlignment(Qt::AlignCenter);

linePort->setText(port);

labelUsuario= new QLabel();

labelUsuario->setText( tr( "Usuario"  ) );
labelUsuario->setAlignment(Qt::AlignCenter);
lineUsuario = new QLineEdit();
lineUsuario->setAlignment(Qt::AlignCenter);
labelPassword= new QLabel();

labelPassword->setText( tr( "Password"  ) );
labelPassword->setAlignment(Qt::AlignCenter);
linePassword= new QLineEdit();
linePassword->setAlignment(Qt::AlignCenter);
linePassword->setEchoMode(QLineEdit::Password);

btnConectar= new QPushButton();
btnConectar->setText( tr( "Conectar"  ) );


verticalLayout->addWidget(labelDatabase);
verticalLayout->addWidget(lineDatabase);
verticalLayout->addWidget(labelHost);
verticalLayout->addWidget(lineHost);
verticalLayout->addWidget(labelPort);
verticalLayout->addWidget(linePort);
verticalLayout->addWidget(labelUsuario);
verticalLayout->addWidget(lineUsuario);
verticalLayout->addWidget(labelPassword);
verticalLayout->addWidget(linePassword);
verticalLayout->addWidget(btnConectar);
statusBar=new QStatusBar();
statusBar->showMessage("   ");
statLabel=new QLabel(this);
statLabel->setText("Procesando");
statProgress=new QProgressBar(this);
statProgress->setTextVisible(false);
statProgress->setRange(0,0);

statusBar->addPermanentWidget(statLabel);
statusBar->addPermanentWidget(statProgress,1);
statusBar->setVisible(false);
mainLayout->addLayout(verticalLayout);
mainLayout->addWidget(statusBar);
mes= new QMessageBox();

driver="QPSQL";
connect(btnConectar, SIGNAL (clicked()), this, SLOT (on_btnConectar_clicked()));
}

void Login::on_btnConectar_clicked()
{

statusBar->setVisible(true);
QString db=lineDatabase->text();
QString server2=lineHost->text();
int port2=linePort->text().toInt();
QString user=lineUsuario->text();
QString pass=linePassword->text();

dbase=QSqlDatabase::addDatabase(driver);
//db.setDatabaseName("DRIVER=(QPSQL);SERVER="+host+";DATABASE="+ui->txtDatabase->text()+";");
dbase.setUserName(user);
dbase.setPassword(pass);
dbase.setHostName(server2);
dbase.setDatabaseName(db);
dbase.setPort(port2);


if(dbase.open()){

   mes->setText(QObject::tr("conexión establecida"));
   mes->show();

   emit conectado();
   close();

}else{

   mes->setText("No se ha podido conectar revise los datos introducidos");
   mes->show();
   statusBar->setVisible(false);
}
}

File config.ini:

[Settings]

; default = standard appearance
theme = default

; es = spanish; pt = portuguese; en = english; 
language = es

; true = ladybug images ; false = traditional images
ladybug = true

[DBDefault]

; true = online ; false = offline;
online = false

; Server URL or IP
server = 193.147.83.170

; Port
port = 5432

; Database name
db = dgt

; Database user
user = postgres
    
asked by Antonio Veloso Gomez 16.05.2017 в 18:38
source

2 answers

0

You must pass it the complete route, that is:

nombre_del_bloque/palabra_clave

In your case:

qsettings=new QSettings(QString(":/config/config.ini"), QSettings::IniFormat);
QString database = qsettings->value("DBDefault/db", "").toString();
QString server=qsettings->value("DBDefault/server","").toString();
QString port=qsettings->value("DBDefault/port","").toString();

qDebug()<<database<<server<<port;

Exit:

"dgt" "193.147.83.170" "5432"

Recommendation: For future publications it is better to place the necessary code.

    
answered by 16.05.2017 в 23:43
0

This already works

 QString configFile = QCoreApplication::applicationDirPath() +"/config/config.ini";
    QSettings qsettings(configFile,QSettings::IniFormat);

    qsettings.beginGroup("DBDefault");
    QString database=qsettings.value("db","").toString();
    QString server=qsettings.value("server","").toString();
    QString port=qsettings.value("port","").toString();
    qsettings.endGroup();
    
answered by 24.05.2017 в 10:07