Bonjour à tous,

mon problème est simple : j'ai une fenêtre de login et une interface de gestion pour mon logiciel.
La personne qui lance le prog tombe sur la fenetre de login, puis s'il se log il passe à la fenêtre de gestion (l'ui de login devient invisible).

Ma question est : comment repasser à la fenêtre de login une fois que je ferme la fenêtre de gestion ?
Sachant que la fenêtre de login (la première) n'est pas détruite, elle est juste en visible(false), et que c'est elle qui gère l'apparition de la fenetre de gestion.

Bien sûr j'ai tenté plein de choses, mais chaque fois des erreurs à gogo

Si joint les fichiers qu'il faut

uilogin.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
 
#ifndef UILOGIN_H
#define UILOGIN_H
 
#include <QDialog>
#include <QSqlQuery>
#include "mainwindow.h"
 
 
namespace Ui {
class uiLogin;
}
 
class uiLogin : public QDialog {
Q_OBJECT
public:
uiLogin(QWidget *parent = 0);
MainWindow ui_main;
~uiLogin();
 
protected:
void changeEvent(QEvent *e);
 
private:
Ui::uiLogin *ui;
 
private slots:
void on_pushButton_2_released();
void on_pushButton_released();
};
 
#endif // UILOGIN_H
uilogin.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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 
#include "uilogin.h"
#include "ui_uilogin.h"
 
uiLogin::uiLogin(QWidget *parent) :
QDialog(parent),
ui(new Ui::uiLogin)
{
ui->setupUi(this);
//Place le curseur dans le champ login
ui->txt_login->setFocus(Qt::OtherFocusReason);
}
 
uiLogin::~uiLogin()
{
delete ui;
}
 
void uiLogin::changeEvent(QEvent *e)
{
QDialog::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
 
//Bouton OK --> tentative de login
void uiLogin::on_pushButton_released()
{
QSqlQuery req;
QString username,password;
username = ui->txt_login->text();
password = ui->txt_passwd->text();
req.exec("SELECT * FROM praticien WHERE username = '"+username+"' AND password = '"+password+"';");
if(req.next()){
ui->txt_erreur->setText("");
ui->txt_login->setText("");
ui->txt_passwd->setText("");
ui_main.show();
this->setVisible(false);
}else{
ui->txt_erreur->setText("Mauvais login ou mot de passe");
ui->txt_login->setText("");
ui->txt_passwd->setText("");
//Replace le curseur dans le champ login
ui->txt_login->setFocus(Qt::OtherFocusReason);
}
}
 
//Bouton Annuler
void uiLogin::on_pushButton_2_released()
{
this->close();
}

mainwindow.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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
 
#include <QtGui>
#include <QMainWindow>
#include <QFileDialog>
#include <qdom.h>
#include "acquisition.h"
#include <QString>
#include <QList>
#include <QSqlQuery>
#include <vector>
#include <QStandardItemModel>
#include <QtSql>
#include <QMessageBox>
#include "vmcombobox.h"
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
Ui::MainWindow *ui;
 
protected:
void changeEvent(QEvent *e);
 
private:
std::vector<Acquisition *> liste_acquisitions;
VMComboBox * ma_cb;
QGraphicsScene scene;//Scene pour les graphiques
QStandardItemModel model;//Model de la table des patients
QString dossier_projet;//Contient le chemin vers le dossier du projet courant
bool projet_ouvert;//True si un projet est actuellement ouvert, false sinon
void chargerConfig();//Fonction qui charge les préférences et options (fichier config.xml)
void ouvrir_projet(QString lefichier);//Ouvre le projet passé en paramètre
void fermerProjet();//Ferme le projet en cours
//void chargerListeAnnotations(Acquisition * lacq);//Charge la liste avec les annotations
void remplirVuePatients(int lid_patient);//Rempli la vue patient lors de l'ouverture d'un projet
void remplirLesChamps(Annotation * lannot);//Rempli les champs avec les valeurs de l'annotation
 
private slots:
void on_liste_acquisitions_currentRowChanged(int currentRow);
void on_actionFermer_Projet_triggered();//Si on clic sur Fichier/Fermer
void on_ma_cb_currentIndexChanged(int index);//Si la combobox est changée
void on_actionOuvrir_triggered();//Si on clique sur Fichier/Ouvrir
void on_menuProjets_R_cents_2_triggered(QAction * action);//Si on clic sur Projets Récents
 
};
 
#endif // MAINWINDOW_H
mainwindow.cpp (je vous fais grace des mes fonctions inutiles pour ma question)
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
 
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMouseEvent>
 
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//On charge la configuration à partir du fichier config.xml
chargerConfig();
//Au démarrage, aucun projet n'est ouvert
projet_ouvert = false;
ma_cb = new VMComboBox();
ma_cb->connect(ma_cb,SIGNAL(currentIndexChanged(int)),this,SLOT(on_ma_cb_currentIndexChanged(int)));
ui->layout_cb->addWidget(ma_cb);
 
 
}
MainWindow::~MainWindow()
{
delete ui;
}

NB : les includes sont parfois pour des fonctions que je n'ai pas mis dans le code ici


Merci