Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage C++ > [Qt] Une bonne architecture de programme > Lecture du sujet

[Qt] Une bonne architecture de programme

Vous devez être inscrit pour pouvoir poster des messages

RésoluLe problème de ce sujet a été résolu

Page : 1 
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1 
Hors ligne Leo_ # Posté le 08/05/2008 à 02:11:27
Groupe : Membres
Bonjour,

Je suis en train de me lancer avec Qt. Pour m'entrainer, je fais l'exemple classique de l'éditeur de texte.

Or dès le niveau de la phase de conception je suis fasse à une interrogation :

Mon main instancie un objet CMainWindow (dérivée de QMainWindow) qui va lui même instance une classe QMenuBar (une classe perso pour ne pas alourdir QMainWindow avec mon menu).

Le code :

Code : C++
1
2
3
4
5
CMainWindow::CMainWindow() : QMainWindow()
{
    this->_menuBar = new CMenuBar(this);
    setMenuBar(this->_menuBar->GetQMenuBar());
}


Code : C++
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
CMenuBar::CMenuBar(QMainWindow *mainWindow)
{
    this->_mainWindow = mainWindow;
    this->_menuBar = new QMenuBar(this->_mainWindow);
    setMenu();
}

QMenuBar* CMenuBar::GetQMenuBar()
{
    return this->_menuBar;
}

void CMenuBar::setMenu()
{
    this->_menuFile = new QMenu("Fichier");

    this->_menuFile->addAction("Quitter", this->_mainWindow, SLOT(close()), this->_mainWindow->tr("CTRL+Q"));

    this->_menuBar->addMenu(this->_menuFile);
}


Résultat : tout marche bien pourtant... Je me demande si cette façon de faire est bien propre. Qu'en pensez vous ?
Hors ligne shadosan # Posté le 08/05/2008 à 03:19:04
WRYYYYYYYY !!
Avatar
Groupe : Membres
assez bien, oui.

Une chose, peut-être : faire hériter ta class CMenuBar de QMenuBar, pour ne pas avoir à utiliser la méthode GetQMenuBar(), un poil encombrante.

mais à part ça, ya rien à redire, celon moi.

EDIT : si tu as besoin d'aide sur la création d'un éditeur de texte, MP moi ^^ je suis moi aussi en train d'en faire un (voir signature), et d'ailleurs en train de faire une refonte du code...
Édité le 08/05/2008 à 03:22:27 par shadosan
 
Connecté minirop # Posté le 08/05/2008 à 03:22:13
オトメンじゃんあい
Avatar
Modérateurs
je rajouterais qu'il n'y a pas vraiment de conseils à donner car chacun à sa façon de faire et tu trouveras ta solution à force de coder (surtout lorsque tu feras des programmes un poil conséquent)

pas commencés - en cours - finis - (dernier tome lu)
manga : Love Hina - Ichigo 100% - Fruits Basket - School Rumble - One Piece (44) - Parmi Eux (21) - Naruto (43) - Death Note (11) - Lovely Complex (8) - Fullmetal Alchimist (20) -> My Manga
IDE multiplateforme pour Qt Image utilisateur !! Qt @ IRC --> #qt-fr@irc.freenode.net
 
Hors ligne Leo_ # Posté le 08/05/2008 à 12:28:17
Groupe : Membres
Citation : shadosan
assez bien, oui.

Une chose, peut-être : faire hériter ta class CMenuBar de QMenuBar, pour ne pas avoir à utiliser la méthode GetQMenuBar(), un poil encombrante.

mais à part ça, ya rien à redire, celon moi.

EDIT : si tu as besoin d'aide sur la création d'un éditeur de texte, MP moi ^^ je suis moi aussi en train d'en faire un (voir signature), et d'ailleurs en train de faire une refonte du code...


C'est ce que je faisais au début mais y'avait un petit bug dans l'affichage de la barre :/

Je suis face à un autre petit problème d'ailleurs ; si à la place de :

Code : C++
1
this->_menuFile->addAction("Quitter", this->_mainWindow, SLOT(close()), this->_mainWindow->tr("CTRL+Q"));


Je veux créer un objet QAction, que je lie à _menuFile en faisant :

Code : C++
1
this->_menuFile->addAction(_monQAction)


Et qu'après je veux connecter un signal avec un slot :

Code : C++
1
connect(this->_monQAction, SIGNAL(trigerred()), this->_mainWindow, SLOT(close()));


La fenetre ne se ferme pas :/

Vous avez une idée d'où ça peut venir?

En tout cas, merci pour vos réponses :)
Édité le 08/05/2008 à 12:28:48 par Leo_
Hors ligne shadosan # Posté le 08/05/2008 à 16:40:25
WRYYYYYYYY !!
Avatar
Groupe : Membres
Cette réponse a aidé l'auteur du sujet Cette réponse a aidé l'auteur du sujet
tu a fait une fote d'ortho - ce n'est pas trigerred mais triggered ;) (le pire et c'est ce que je déteste, les phauthe d'ortho dans un SIGNAL() / SLOT() passe bien à la compilation -_-)

EDIT : activer temporairement la console peux aider à déceler ce genre d'erreur. Tu n'as qu'à ajouter dans ton fichier .pro :

QT += console

et si un connect() foire, il affichera un message.
Édité le 08/05/2008 à 16:45:56 par shadosan
 
Hors ligne Leo_ # Posté le 09/05/2008 à 11:23:37
Groupe : Membres
Effectivement ça marche mieux :)

Merci pour l'astuce de la console :p

Retour au forum "Langage C++" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news | XHTML 1.0 | CSS 2.0
Édité par Simple IT SARL : Nous contacter | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 267 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0285s (0.013s)