Parcourir la 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 il y a 9 ans
Parent
commit
a88ffee559
5 fichiers modifiés avec 91 ajouts et 23 suppressions
  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>