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 11 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);
 	setLayout (ecranLayout);
 	
 	
-	affichage();
-	
-	timer = new QTimer  (this);
+    affichage();
+    timer = new QTimer  (this);
 	timer->setInterval (10);
 	timer->setInterval (10);
 	QObject::connect (timer , SIGNAL (timeout() ) , this , SLOT (refresh()));
 	QObject::connect (timer , SIGNAL (timeout() ) , this , SLOT (refresh()));
 }
 }
 
 
+void Chronometre::modifierNomJoueur(QString joueur) {
+    setTitle(joueur);
+}
+
 void Chronometre::refresh () {
 void Chronometre::refresh () {
     ms += 10;
     ms += 10;
 	affichage ();
 	affichage ();

+ 4 - 3
Chronometre.h

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

+ 68 - 14
MaFenetre.cpp

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

+ 12 - 2
MaFenetre.h

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

+ 1 - 1
chronoCheckMate.pro.user

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
 <!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>
 <qtcreator>
  <data>
  <data>
   <variable>ProjectExplorer.Project.ActiveTarget</variable>
   <variable>ProjectExplorer.Project.ActiveTarget</variable>