瀏覽代碼

Passage en QMainWindow
Epuration de l'interface
Déplacement de certains boutons dans les menus

François Drouhard 9 年之前
父節點
當前提交
9640017b1d
共有 3 個文件被更改,包括 39 次插入49 次删除
  1. 33 39
      MaFenetre.cpp
  2. 4 8
      MaFenetre.h
  3. 2 2
      chronoCheckMate.pro.user

+ 33 - 39
MaFenetre.cpp

@@ -22,6 +22,7 @@
  
 #include "MaFenetre.h"
 #include "Chronometre.h"
+#include <QMenuBar>
 #include <QHBoxLayout>
 #include <QVBoxLayout>
 #include <QPushButton>
@@ -33,47 +34,45 @@
 #include <QDialogButtonBox>
 
 MaFenetre::MaFenetre() :
-    QWidget (),
+    QMainWindow (),
     nomJoueur1 ("Joueur 1"),
     nomJoueur2 ("Joueur 2")
 {
-	marche = false;
+    QWidget *centralWidget = new QWidget;
+
+    marche = false;
     chrono1 = new Chronometre(nomJoueur1 , this);
     chrono2 = new Chronometre(nomJoueur2 , this);
     boutonInverser = new QPushButton ("<->");
+
 	////////////////// Groupe Définition de la classe ///////////////////////////
     layoutChrono = new QHBoxLayout;
 	layoutChrono->addWidget(chrono1);
     layoutChrono->addWidget(boutonInverser);
 	layoutChrono->addWidget(chrono2);
 
-	/*groupChrono = new QGroupBox ("Chronomètre d'échecs");
-	groupChrono->setLayout (layoutChrono);*/
+    ///////////////////////////// Menus ////////////////////////////
+    QMenu *menuFichier = menuBar()->addMenu("&Fichier");
+    QAction *actionNouveau = new QAction ("&Nouveau" , this);
+    QAction *actionChangerNom = new QAction ("&Changer nom des joueurs...", this);
+    QAction *actionQuitter = new QAction ("&Quitter" , this);
+    menuFichier->addAction(actionNouveau);
+    menuFichier->addAction(actionChangerNom);
+    menuFichier->addSeparator();
+    menuFichier->addAction(actionQuitter);
+
 	///////////////////////////// Boutons   /////////////////////////////
-	boutonDemarrer = new QPushButton ("Commencer");
-	boutonSwitch = new QPushButton ("Changer");
-	boutonArreter = new QPushButton ("Arrêter");
-	boutonInit = new QPushButton ("Remettre à Zéro");
+    boutonDemarrer = new QPushButton ("Commencer (Barre Espace)");
+    boutonArreter = new QPushButton ("Arrêter(Touche Entrée)");
 	
 	boutonArreter->setFocusPolicy (Qt::NoFocus);
-	boutonSwitch->setFocusPolicy (Qt::NoFocus);
-	boutonInit->setFocusPolicy (Qt::NoFocus);
     boutonInverser->setFocusPolicy(Qt::NoFocus);
 
-	etatBoutons (true , false , false , false);
+    etatBoutons (true , false);
 	
 	layoutBoutonSwitch = new QHBoxLayout;
 	layoutBoutonSwitch->addWidget (boutonDemarrer);
-	layoutBoutonSwitch->addWidget (boutonSwitch);
-	layoutBoutonSwitch->addWidget (boutonArreter);
-	layoutBoutonSwitch->addWidget (boutonInit);
-	
-	///////////////////////////// Bouton Quitter ///////////////////////////
-	boutonQuitter = new QPushButton ("Quitter");
-	boutonQuitter->setFocusPolicy (Qt::NoFocus);
-	
-	layoutBoutons = new QHBoxLayout;
-	layoutBoutons->addWidget (boutonQuitter);
+    layoutBoutonSwitch->addWidget (boutonArreter);
 
     ///////////////////////////// Aide /////////////////////////////////////
     QLabel *labelAide = new QLabel ("<b>Aide</b><br />Espace : Lancer le chrono/Donner le chrono<br />Entrée : Stopper les deux chronos");
@@ -83,31 +82,27 @@ MaFenetre::MaFenetre() :
 	layoutComplet->addLayout (layoutChrono);
 	layoutComplet->addLayout (layoutBoutonSwitch);
     layoutComplet->addWidget (labelAide);
-	layoutComplet->addLayout (layoutBoutons);
-	setLayout (layoutComplet);
+    centralWidget->setLayout (layoutComplet);
+    setCentralWidget(centralWidget);
 	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 (boutonInverser , SIGNAL(clicked()) , this , SLOT(inverser()));
+    QObject::connect (actionNouveau, SIGNAL(triggered()) , this , SLOT(init()));
+    QObject::connect (actionChangerNom , SIGNAL(triggered()), this, SLOT(definirNomJoueurs()));
+    QObject::connect (actionQuitter , SIGNAL(triggered()) , qApp , SLOT(quit()));
 }
 
 ///////////////// Méthodes ////////////////////
-void MaFenetre::etatBoutons (bool bouton1, bool bouton2 , bool bouton3 , bool bouton4) {
+void MaFenetre::etatBoutons (bool bouton1, bool bouton2) {
 	boutonDemarrer->setEnabled (bouton1);
-	boutonSwitch->setEnabled (bouton2);
-	boutonArreter->setEnabled (bouton3);
-	boutonInit->setEnabled (bouton4);
+    boutonArreter->setEnabled (bouton2);
 }
 
-
 ////////////////// SLOTS ////////////////////////
 void MaFenetre::inverser() {
     layoutChrono->removeWidget(chrono1);
@@ -125,7 +120,7 @@ void MaFenetre::demarrer () {
 		chrono2->reinit ();
 		chrono1->start ();
 		marche = true;
-		etatBoutons (false , true , true , false);
+        etatBoutons (false , true);
 	}
 }
 
@@ -146,15 +141,14 @@ void MaFenetre::arreter () {
 	chrono1->stop();
 	chrono2->stop();
 	marche = false;
-	etatBoutons (true , false , false , true);
+    etatBoutons (true , false);
 }
 
 void MaFenetre::init () {
-	if (marche == false) {
-        chrono1->reinit();
-		chrono2->reinit();
-		etatBoutons (true , false , false , false);
-	}
+    chrono1->reinit();
+    chrono2->reinit();
+    marche = false;
+    etatBoutons (true , false);
 }
 
 void MaFenetre::definirNomJoueurs() {

+ 4 - 8
MaFenetre.h

@@ -24,19 +24,19 @@
 #define DEF_MAFENETRE
  
 
-#include <QWidget>
+#include <QMainWindow>
 class Chronometre;
 class QVBoxLayout;
 class QHBoxLayout;
 class QPushButton;
 class QLineEdit;
 
-class MaFenetre : public QWidget { // On hérite de QWidget (IMPORTANT)
+class MaFenetre : public QMainWindow { // On hérite de QMainWindow (IMPORTANT)
 	Q_OBJECT
 
 	public:
 	MaFenetre();
-	void etatBoutons (bool bouton1 , bool bouton2 , bool bouton3 , bool bouton4);
+    void etatBoutons (bool bouton1 , bool bouton2);
     void modifierNomJoueurs ();
 
 	private slots:
@@ -51,7 +51,6 @@ class MaFenetre : public QWidget { // On h
 	void keyReleaseEvent (QKeyEvent * evenement);
 
 	bool marche;
-	//QGroupBox *groupChrono;
     QString nomJoueur1;
     QString nomJoueur2;
 	Chronometre *chrono1;
@@ -61,11 +60,8 @@ class MaFenetre : public QWidget { // On h
 	QHBoxLayout *layoutChrono;
 	QHBoxLayout *layoutBoutons;
     QVBoxLayout *layoutComplet;
-    QPushButton *boutonQuitter;
 	QPushButton *boutonDemarrer;
-	QPushButton *boutonSwitch;
-	QPushButton *boutonArreter;
-	QPushButton *boutonInit;
+    QPushButton *boutonArreter;
     QPushButton *boutonInverser;
     QHBoxLayout *layoutBoutonSwitch;
 

+ 2 - 2
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-27T07:05:38. -->
+<!-- Written by Qt Creator 2.4.1, 2015-07-28T20:27:15. -->
 <qtcreator>
  <data>
   <variable>ProjectExplorer.Project.ActiveTarget</variable>
@@ -52,7 +52,7 @@
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Target.DesktopTarget</value>
-   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
    <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
    <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
    <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">