Browse Source

Ajout d'un QDialog pour modifier les noms des jours
Ajout d'un bouton pour changer les joueurs de côté

François Drouhard 10 năm trước cách đây
mục cha
commit
a88ffee559
5 tập tin đã thay đổi với 91 bổ sung23 xóa
  1. 6 3
      Chronometre.cpp
  2. 4 3
      Chronometre.h
  3. 68 14
      MaFenetre.cpp
  4. 12 2
      MaFenetre.h
  5. 1 1
      chronoCheckMate.pro.user

+ 6 - 3
Chronometre.cpp

@@ -48,13 +48,16 @@ Chronometre::Chronometre (const QString & nom , QWidget * parent = 0) :
 
 	setLayout (ecranLayout);
 	
-	affichage();
-	
-	timer = new QTimer  (this);
+    affichage();
+    timer = new QTimer  (this);
 	timer->setInterval (10);
 	QObject::connect (timer , SIGNAL (timeout() ) , this , SLOT (refresh()));
 }
 
+void Chronometre::modifierNomJoueur(QString joueur) {
+    setTitle(joueur);
+}
+
 void Chronometre::refresh () {
     ms += 10;
 	affichage ();

+ 4 - 3
Chronometre.h

@@ -42,9 +42,10 @@ class Chronometre : public QGroupBox {
 	void affichage ();
 	void reinit ();
 	void basculer ();
-	
-	private slots:
-	void refresh ();
+    void modifierNomJoueur (QString joueur);
+
+    private slots:
+    void refresh ();
 	
 	private:
     int ms;

+ 68 - 14
MaFenetre.cpp

@@ -28,18 +28,25 @@
 #include <QKeyEvent>
 #include <QApplication>
 #include <QLabel>
+#include <QDialog>
+#include <QLineEdit>
+#include <QDialogButtonBox>
 
-MaFenetre::MaFenetre() : QWidget () {
+MaFenetre::MaFenetre() :
+    QWidget (),
+    nomJoueur1 ("Joueur 1"),
+    nomJoueur2 ("Joueur 2")
+{
 	marche = false;
-	chrono1 = new Chronometre("Joueur 1" , this);
-	chrono2 = new Chronometre("Joueur 2" , this);
-	
+    chrono1 = new Chronometre(nomJoueur1 , this);
+    chrono2 = new Chronometre(nomJoueur2 , this);
+    boutonInverser = new QPushButton ("<->");
 	////////////////// Groupe Définition de la classe ///////////////////////////
-	
-	layoutChrono = new QHBoxLayout;
+    layoutChrono = new QHBoxLayout;
 	layoutChrono->addWidget(chrono1);
+    layoutChrono->addWidget(boutonInverser);
 	layoutChrono->addWidget(chrono2);
-	
+
 	/*groupChrono = new QGroupBox ("Chronomètre d'échecs");
 	groupChrono->setLayout (layoutChrono);*/
 	///////////////////////////// Boutons   /////////////////////////////
@@ -51,7 +58,8 @@ MaFenetre::MaFenetre() : QWidget () {
 	boutonArreter->setFocusPolicy (Qt::NoFocus);
 	boutonSwitch->setFocusPolicy (Qt::NoFocus);
 	boutonInit->setFocusPolicy (Qt::NoFocus);
-	
+    boutonInverser->setFocusPolicy(Qt::NoFocus);
+
 	etatBoutons (true , false , false , false);
 	
 	layoutBoutonSwitch = new QHBoxLayout;
@@ -70,7 +78,6 @@ MaFenetre::MaFenetre() : QWidget () {
     ///////////////////////////// Aide /////////////////////////////////////
     QLabel *labelAide = new QLabel ("<b>Aide</b><br />Espace : Lancer le chrono/Donner le chrono<br />Entrée : Stopper les deux chronos");
 	
-	
 	/////////////////////////////Mise en page finale ///////////////////////////
 	layoutComplet = new QVBoxLayout;
 	layoutComplet->addLayout (layoutChrono);
@@ -79,12 +86,17 @@ MaFenetre::MaFenetre() : QWidget () {
 	layoutComplet->addLayout (layoutBoutons);
 	setLayout (layoutComplet);
 	setWindowTitle ("ChronoCheckMate");
+
+    ///////////////////////////// Ouverture de la boite de dialogue /////////////////
+    definirNomJoueurs();
+
 	///////////////////////////// connections ///////////////////////////
 	QObject::connect (boutonQuitter , SIGNAL(clicked ()) , qApp , SLOT(quit ())) ;
-	QObject::connect (boutonDemarrer , SIGNAL (clicked () ) , this , SLOT (demarrer () ));
-	QObject::connect (boutonSwitch , SIGNAL (clicked() ) , this , SLOT (switcher() ));
-	QObject::connect (boutonArreter , SIGNAL (clicked() ) , this , SLOT (arreter() ));
-	QObject::connect (boutonInit , SIGNAL (clicked () ) , this , SLOT (init () ));
+    QObject::connect (boutonDemarrer , SIGNAL(clicked () ) , this , SLOT(demarrer () ));
+    QObject::connect (boutonSwitch , SIGNAL(clicked() ) , this , SLOT(switcher() ));
+    QObject::connect (boutonArreter , SIGNAL(clicked() ) , this , SLOT(arreter() ));
+    QObject::connect (boutonInit , SIGNAL(clicked () ) , this , SLOT(init () ));
+    QObject::connect (boutonInverser , SIGNAL(clicked()) , this , SLOT(inverser()));
 }
 
 ///////////////// Méthodes ////////////////////
@@ -95,7 +107,18 @@ void MaFenetre::etatBoutons (bool bouton1, bool bouton2 , bool bouton3 , bool bo
 	boutonInit->setEnabled (bouton4);
 }
 
+
 ////////////////// SLOTS ////////////////////////
+void MaFenetre::inverser() {
+    layoutChrono->removeWidget(chrono1);
+    layoutChrono->removeWidget(chrono2);
+    Chronometre *chronoTemp = chrono1;
+    chrono1 = chrono2;
+    chrono2 = chronoTemp;
+    layoutChrono->insertWidget(0 , chrono1);
+    layoutChrono->addWidget(chrono2);
+}
+
 void MaFenetre::demarrer () {
 	if (marche == false ) {
 		chrono1->reinit ();
@@ -106,6 +129,12 @@ void MaFenetre::demarrer () {
 	}
 }
 
+void MaFenetre::modifierNomJoueurs() {
+    chrono1->modifierNomJoueur(nomJoueur1);
+    chrono2->modifierNomJoueur(nomJoueur2);
+
+}
+
 void MaFenetre::switcher () {
 	if (marche == true) {
 		chrono1->basculer ();
@@ -122,12 +151,37 @@ void MaFenetre::arreter () {
 
 void MaFenetre::init () {
 	if (marche == false) {
-		chrono1->reinit();
+        chrono1->reinit();
 		chrono2->reinit();
 		etatBoutons (true , false , false , false);
 	}
 }
 
+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();
+        modifierNomJoueurs();
+    }
+}
+
 void MaFenetre::keyReleaseEvent (QKeyEvent * evenement) {
 	if (evenement->key() == Qt::Key_Space) {
         if (marche == true) {

+ 12 - 2
MaFenetre.h

@@ -29,6 +29,7 @@ class Chronometre;
 class QVBoxLayout;
 class QHBoxLayout;
 class QPushButton;
+class QLineEdit;
 
 class MaFenetre : public QWidget { // On hérite de QWidget (IMPORTANT)
 	Q_OBJECT
@@ -36,20 +37,27 @@ class MaFenetre : public QWidget { // On h
 	public:
 	MaFenetre();
 	void etatBoutons (bool bouton1 , bool bouton2 , bool bouton3 , bool bouton4);
+    void modifierNomJoueurs ();
 
 	private slots:
 	void demarrer ();
 	void switcher ();
 	void init ();
 	void arreter ();
+    void definirNomJoueurs();
+    void inverser ();
 	
 	private:
 	void keyReleaseEvent (QKeyEvent * evenement);
-	
+
 	bool marche;
 	//QGroupBox *groupChrono;
+    QString nomJoueur1;
+    QString nomJoueur2;
 	Chronometre *chrono1;
 	Chronometre *chrono2;
+    QLineEdit   *joueur1LineEdit;
+    QLineEdit   *joueur2LineEdit;
 	QHBoxLayout *layoutChrono;
 	QHBoxLayout *layoutBoutons;
     QVBoxLayout *layoutComplet;
@@ -58,7 +66,9 @@ class MaFenetre : public QWidget { // On h
 	QPushButton *boutonSwitch;
 	QPushButton *boutonArreter;
 	QPushButton *boutonInit;
-	QHBoxLayout *layoutBoutonSwitch;
+    QPushButton *boutonInverser;
+    QHBoxLayout *layoutBoutonSwitch;
+
 
 };
 

+ 1 - 1
chronoCheckMate.pro.user

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by Qt Creator 2.4.1, 2015-07-25T20:10:23. -->
+<!-- Written by Qt Creator 2.4.1, 2015-07-27T06:56:46. -->
 <qtcreator>
  <data>
   <variable>ProjectExplorer.Project.ActiveTarget</variable>