Bonjour à tous,

Je suis nouveau sur le forum et débutant en programmation Qt donc je viens vous solliciter pour un petit "bug" de mon programme.

Je vous présente ce que je souhaite faire:
-Une première QMainwindow (Mainwindow) qui fera office d'interface d'authentification composé de 2 QLineEdit (ID et MDP) + un QPushButton qui ouvrira une deuxième QMainwindow.
-Cette deuxième QMainwindow (Backup) "stock" l'ID dans un membre QString. Et qui permettra à l'utilisateur de dire s'il est en ligne ou hors ligne (au lancement de l'application il sera par défaut en ligne).
-L'état en ligne ou hors ligne correspondra au champs "isOnline" de ma BDD (1 en ligne, 0 hors ligne), j'utilise le QString User pour concaténer dans ma requête SQL.

Voici le code de Mainwindow.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
void MainWindow::on_pushButton_Backup_clicked()
{
    if(Identification(ui->lineEdit_CUID->text(),ui->lineEdit_MDP->text()))  // Si l'identification a reussie
    {
        Backup* backup = new Backup();
        backup->User = ui->lineEdit_CUID->text().toUpper(); // on stock le CUID dans le membre "User" qui est une QString
        db.close();
        backup->show(); // On ouvre l'interface Backup
        close();
    }
    else ui->textEdit_Log->append("Erreur de login");
}
(je n'ai mis que la partie qui me semblait pertinente mais si besoin je mettrais le reste)

Le code de backup.h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#ifndef BACKUP_H
#define BACKUP_H
 
#include <QtSql\QSqlDatabase.h>
#include <QSqlError>
#include <QSqlQuery>
#include <QTextEdit>
#include <mypushbutton.h>
#include <QMessageBox>
#include <QTime>
#include <QtNetwork>
 
#include <QMainWindow>
 
class MainWindow;
 
namespace Ui {
class Backup;
}
 
class Backup : public QMainWindow
{
    Q_OBJECT
    MainWindow *Parent;
public:
    explicit Backup(QWidget *parent = 0);
    ~Backup();
    QSqlDatabase db;
    QString User;
 
private slots:
    void on_comboBox_currentIndexChanged(const QString &arg1);
 
private:
    Ui::Backup *ui;
};
 
#endif // BACKUP_H
Et le code de backup.cpp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "backup.h"
#include "ui_backup.h"
 
#include "mainwindow.h"
 
Backup::Backup(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Backup)
{
    Parent = (MainWindow*)parent;
    ui->setupUi(this);
 
    db = QSqlDatabase::addDatabase("QODBC","MaBD2");
    db.setDatabaseName("MaBD");
    db.open();
 
    QSqlQuery Query(db);
    if(Query.exec("UPDATE Utilisateurs SET isOnline = 1 WHERE CUID = '"+User+"';"))
        ui->textEdit_Log->append("<strong>"+QTime::currentTime().toString("hh:mm")+":</strong> Disponible");
}
 
Backup::~Backup()
{
    db.close();
    delete ui;
}
 
void Backup::on_comboBox_currentIndexChanged(const QString &arg1)
{
    // ui->textEdit_Log->append(User);
    QSqlQuery Query(db);
    if(arg1 == "Disponible")
        if(Query.exec("UPDATE Utilisateurs SET isOnline = 1 WHERE CUID = '"+User+"';"))
            ui->textEdit_Log->append("<strong>"+QTime::currentTime().toString("hh:mm")+":</strong> "+arg1);
    if(arg1 == "Indisponible")
        if(Query.exec("UPDATE Utilisateurs SET isOnline = 0 WHERE CUID = '"+User+"';"))
            ui->textEdit_Log->append("<strong>"+QTime::currentTime().toString("hh:mm")+":</strong> "+arg1);
}
(vu comme ça perso ça m'a l'air pas mal )

Sauf que ça ne marche pas tout à fait!

Le champs "isOnline" ne se met pas à 1 au démarrage, pourtant j'ai bien le message disponible dans TextEditLog (ce qui devrait dire que la requête a fonctionné?!).
J'ai essayé d'entrer un ID "en dur" dans la première requête et la ça fonctionne. C'est ce qui me fait penser que c'est bien le membre QString User qui déconne.
En le testant avec les méthodes .isEmpty() et .isNull() j'ai dans les deux cas TRUE! C'est possible ça?

Sinon les requêtes qui sont dans le slot du QCombobox fonctionnent bien (et pourtant elles utilisent ce membre QString!).

Bref du coup je sais plus trop quoi faire.
J'espère que j'aurais été assez clair, merci d'avoir lu mon pavé et merci pour vos futures réponses.