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
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 #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
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
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
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
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
Partager