Browse Source

Passage de dialogue en classe

François Drouhard 7 years ago
parent
commit
d2275ce722
4 changed files with 48 additions and 27 deletions
  1. 4 2
      ChronoCheckMate.pro
  2. 27 1
      Dialog.cpp
  3. 12 4
      Dialog.h
  4. 5 20
      MaFenetre.cpp

+ 4 - 2
ChronoCheckMate.pro

@@ -19,5 +19,7 @@ DEFINES += QT_DEPRECATED_WARNINGS
 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
 
 # Input
-HEADERS += Chronometre.h MaFenetre.h
-SOURCES += Chronometre.cpp MaFenetre.cpp main.cpp
+HEADERS += Chronometre.h MaFenetre.h \
+    Dialog.h
+SOURCES += Chronometre.cpp MaFenetre.cpp main.cpp \
+    Dialog.cpp

+ 27 - 1
Dialog.cpp

@@ -1,6 +1,32 @@
 #include "Dialog.h"
+#include <QBoxLayout>
+#include <QLineEdit>
+#include <QDialogButtonBox>
 
-Dialog::Dialog(QObject *parent) : QObject(parent)
+Dialog::Dialog(QString nom1, QString nom2, QWidget *parent) :
+    QDialog(parent)
 {
+    QHBoxLayout *layoutLineEdit = new QHBoxLayout;
+    QVBoxLayout *layoutDialog = new QVBoxLayout;
+    QDialogButtonBox *boutonJouer = new QDialogButtonBox (QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
+    joueur1LineEdit = new QLineEdit(nom1 , this);
+    joueur2LineEdit = new QLineEdit(nom2 , this);
+    joueur1LineEdit->selectAll();
 
+    layoutLineEdit->addWidget(joueur1LineEdit);
+    layoutLineEdit->addWidget(joueur2LineEdit);
+    layoutDialog->addLayout(layoutLineEdit);
+    layoutDialog->addWidget(boutonJouer);
+    setLayout(layoutDialog);
+
+    QObject::connect(boutonJouer , SIGNAL(accepted()) , this, SLOT(accept()));
+    QObject::connect(boutonJouer , SIGNAL(rejected()) , this, SLOT(close()));
+}
+
+QString Dialog::joueur1 () const {
+    return joueur1LineEdit->text();
+}
+
+QString Dialog::joueur2 () const {
+    return joueur2LineEdit->text();
 }

+ 12 - 4
Dialog.h

@@ -1,17 +1,25 @@
 #ifndef DIALOG_H
 #define DIALOG_H
 
-#include <QObject>
+#include <QDialog>
+class QLineEdit;
+class QString;
 
-class Dialog : public QObject
+class Dialog : public QDialog
 {
     Q_OBJECT
 public:
-    explicit Dialog(QObject *parent = nullptr);
+    explicit Dialog(QString nom1, QString nom2, QWidget *parent = nullptr);
+    QString joueur1 () const;
+    QString joueur2 () const;
 
 signals:
 
 public slots:
+
+private:
+    QLineEdit* joueur1LineEdit;
+    QLineEdit* joueur2LineEdit;
 };
 
-#endif // DIALOG_H
+#endif // DIALOG_H

+ 5 - 20
MaFenetre.cpp

@@ -22,6 +22,7 @@
  
 #include "MaFenetre.h"
 #include "Chronometre.h"
+#include "Dialog.h"
 #include <QMenuBar>
 #include <QHBoxLayout>
 #include <QVBoxLayout>
@@ -155,26 +156,10 @@ void MaFenetre::init () {
 }
 
 void MaFenetre::definirNomJoueurs() {
-    QDialog *dialog = new QDialog (this);
-    QHBoxLayout *layoutLineEdit = new QHBoxLayout;
-    QVBoxLayout *layoutDialog = new QVBoxLayout;
-    QDialogButtonBox *boutonJouer = new QDialogButtonBox (QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
-    QLineEdit *joueur1LineEdit = new QLineEdit(nomJoueur1 , this);
-    QLineEdit *joueur2LineEdit = new QLineEdit(nomJoueur2 , this);
-    joueur1LineEdit->selectAll();
-
-    layoutLineEdit->addWidget(joueur1LineEdit);
-    layoutLineEdit->addWidget(joueur2LineEdit);
-    layoutDialog->addLayout(layoutLineEdit);
-    layoutDialog->addWidget(boutonJouer);
-    dialog->setLayout(layoutDialog);
-
-    QObject::connect(boutonJouer , SIGNAL(accepted()) , dialog, SLOT(accept()));
-    QObject::connect(boutonJouer , SIGNAL(rejected()) , dialog, SLOT(close()));
-
-    if (dialog->exec()) {
-        nomJoueur1 = joueur1LineEdit->text();
-        nomJoueur2 = joueur2LineEdit->text();
+    Dialog dialog(nomJoueur1, nomJoueur2, this);
+    if (dialog.exec()) {
+        nomJoueur1 = dialog.joueur1();
+        nomJoueur2 = dialog.joueur2();
         modifierNomJoueurs();
     }
 }