|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : octobre 2009 Messages : 20 ![]() |
Bonjour,
Après avoir chercher en vain durant 8 jours dans différents forums je me permet de vous exposer mon problème. Je suis un retraité qui s'intéresse à la programmation c++ en utilisant Qt. J'ai déjà réussi pas mal de chose mais cette fois ci ça bloque! Je veux transférer une somme qui est le résultat d'un calcul et se trouvant dans un Q Label dans ma fenêtre A. Donc transférer cette somme via une variable dans une fenêtre B pour y effectuer un autre calcul. Les fenêtres sont en places je peux les ouvrir et fermer effectuer des calculs mais hélas pas transférer ma variable dans la fenêtre B. Merci pour une aide qui me sera précieuse. |
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Saâd HessaneIngénieur développement logiciels Inscription : avril 2008 Messages : 287 ![]() |
Bonjour,
Cela dépend de comment l'application est faite. Plus de détails sur comment sont créés les deux fenêtre seraient bienvenue. Pour répondre de manière générale, Qt fournit un mécanisme de communication qui est les signaux/slot. Créez un signal personnalisé dans la classe de la fenêtre A (void calculeTermine(int valeur)), et un slot personnalisé dans la classe de la fenêtre B (void setValeur(int valeur)). Connectez les deux et le tour est joué. Lorsque le signal est émit (emit calculeTermine(maVariable)), le slot de la fenêtre B est appelé. Mais il y a tellement d'autres manières de faire que, comme je vous ai dit, cela dépend de votre application. |
|
|
00
|
|
|
#3 |
![]() ![]() |
Salut,
En effet, cela dépend grandement de la manière dont les deux fenêtres sont créées. Comme il y a trois situations possibles, commençons peut etre par le "kifékoi", pour être sur de parler de la même chose Je vais donc partir du principe que la fenêtre A est la classe qui dispose de ton QLabel dans lequel se trouve le résultat du calcul et que la fenêtre B est la classe qui doit récupérer ce résultat. La situation la plus simple est si la fenêtre B est ouverte uniquement au départ de la fenêtre A : il te "suffit" de fournir la valeur du résultat comme argument dans le constructeur de B, et, bien sur, d'enregistrer cette valeur dans un membre de la fenêtre B La situation inverse (c'est la fenêtre B qui ouvre la fenêtre A) peut se résoudre de deux manières: Si B est le parent de A, tu peux "tout simplement" placer une fonction "setResultat" dans B et l'appeler depuis A lorsque le résultat est disponible ou utiliser le principe indiqué par saad. La troisième situation est celle ou A et B fonctionne de manière tout à fait autonome (créées par une troisième fenetre que nous nommerions C), et, dans ce cas, le système de signaux / slots indiqué par saad est la solution la plus adaptée Note que le système de signaux / slots peut etre utilisé dans les trois situations, mais qu'il est parfois simplement inutile d'y recourir juste "pour se faire du mal"
__________________
en bas de page
|
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() Inscription : octobre 2009 Messages : 20 ![]() |
Un grand bonjour à saad.hessane, et à koala01
Merci de m'avoir conseillé aussi rapidement. J'ai essayé suivant vos différents conseils mais quelque part ça bloque . Ci-joint en pièce jointe mon code. La fenêtre A (fenetre) ouvre bien la fenetre B (fenfrais). Voici le résultat de la compilation : erreur : 'fenfrais' was not declared in this scope |
|
|
00
|
|
|
#5 |
|
Membre éclairé
![]() Saâd HessaneIngénieur développement logiciels Inscription : avril 2008 Messages : 287 ![]() |
Bonjour,
Le mieux est de fournir un code source. Le message d'erreur est un peu flou sans le code source qui l'a provoqué. |
|
|
00
|
|
|
#6 | ||||||||||
|
Invité régulier
![]() Inscription : octobre 2009 Messages : 20 ![]() |
Bonjour et merci de répondre
mon code source Mon fichier calculaddition.cpp Code :
***************************************************************************** Voici mon fichier calculaddition.h Code :
Voici mon fichier frais.cpp Code :
Voici mon fichier frais.h Code :
Voici mon fichier MainCalculAddition.cpp Code :
|
||||||||||
|
|
00
|
|
|
#7 |
|
Membre éclairé
![]() Saâd HessaneIngénieur développement logiciels Inscription : avril 2008 Messages : 287 ![]() |
Votre code possède certain problèmes :
|
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : octobre 2009 Messages : 20 ![]() |
Bonjour et merci de me répondre,
Décidément Qt et c++ c'est plus compliqué que JAVA car auparavant je programmais avec ce dernier le transfert était plus simple. Je suis un jeune retraité de 72 ans! qui à du mal à suivre excusez moi. Jusqu’à' à présent j'ai réussi avec ce petit programme: d'imprimer, de sauvegarder dans un fichier binaire, de faire de petits calculs de ré ouvrir mon fichier ainsi que de dessiner... J'ai déjà écumé tous les forums sans trouver de réponses simples et compréhensible, je ne veux pas aller sur autre chose avant d'avoir compris ce transfert. Je n'ai jamais posté de l'aide sur un forum je me suis toujours débrouillé seul également en java. Je n'arrive pas à comprendre connect avec un signal, comment arriver émettre de fenêtre en fenêtre? Je vous remercie de bien vouloir me donner un exemple simple . A plus et merci de me répondre. |
|
|
00
|
|
|
#9 | ||||||
![]() ![]() |
En fait, il faut que la classe qui va essayer de connecter un signal à un slot ait connaissance aussi bien de l'objet qui dispose du signal que de l'objet qui dispose du slot...
A partir de là, il y a trois solutions : L'objet qui émet le signal est carrément un membre de l'objet qui va devoir le traiter. Ce cas est assez facile à gérer car c'est l'objet "parent" qui va s'occuper de la connexion. Cela pourrait ressembler à quelque chose comme Code :
Code :
Code :
__________________
en bas de page
|
||||||
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() Inscription : octobre 2009 Messages : 20 ![]() |
Bonjour koala01
Un grand merci pour ces longues explications. J'ai tout imprimer et je vais de suite étudier et essayer, il faut bien que j'y arrive!!! Je ne manquerai pas de te tenir au courant. En attendant bonnes fêtes de fin d'année et encore merci pour tout. |
|
|
00
|
|
|
#11 |
|
Invité régulier
![]() Inscription : octobre 2009 Messages : 20 ![]() |
Un grand bonjour à koala01 et à saad.hessane,
Après un long silence j'ai le plaisir de vous annoncer que j'ai réussi à transférer mes variables de la fenêtre A vers la fenêtre B. Ceci n'a été possible que grâce à vos explications et conseils. Je vous remercie pour votre aide. Sincères salutations et encore merci. rapidego |
|
|
10
|
|
|
#12 |
|
Invité régulier
![]() Inscription : octobre 2009 Messages : 20 ![]() |
Bonjour
Au bout de 8 jours de recherche en vain sur tous les forums je me permet de vous demander de l'aide et merci par avance. J'ai un nouveau problème avec Qt sans utiliser QTDesigner pour créer une application MDI. J'ai créer une application MDI avec 3 fenêtres filles. Ces fenêtres je veux qu'elles ne s'ouvrent qu'une seule fois en appuyant sur le menu fichier. Or c'est le contraire qui se passe à chaque fois que je clique la même fenêtre fille s'ouvre à nouveau avec ma ligne de code Qt Dans lattente d'une aide recevez mes sincères salutations rapidego |
|
|
00
|
|
|
#13 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : février 2012 Messages : 8 ![]() |
Bonjour!! Suis un peu nouveau sur les fora mais je vais essayer de vous aider!
Est-ce-qu'à chaque fois qu'on clique sur le menu, vous appelez le slot(showMaximized) ou vous appelez un slot que vous avez vous même crée? |
|
00
|
|
|
#14 |
|
Invité régulier
![]() Inscription : octobre 2009 Messages : 20 ![]() |
Lors de l'installation de Qt 5.0.1 il était impossible d'installer QtCreator.
Apparemment il n'est pas contenu dans Qt 5.0.1. Dans les options d'installation de composants il est écrit en filigrane impossible de le sélectionner pour installation. Que faut-il faire ... comment installer QtCreator avec Qt 5.01? ****************************************************************** Voila j'ai installé Qt5.01 et puis QtCreator 2.6.2 par après. J'ai tout configuré dans QtCreator. Quand je compile voila le résultat affiché: Le processus "mingw32-make.exe" a crashé. Pourtant qmake fonctionne big_smile:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin\qmake.exe" s'est terminé normalement. Quoi faire pour arriver à compiler? Merci pour toute aide |
|
|
00
|
|
|
#15 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : février 2012 Messages : 8 ![]() |
Pour le Qt Creator 2.6.2, il faut que tu utilise mingw32 version 4.4.0 sinon avec les dernières versions du mingw32, ça ne marche!! Pour faire facile, si tu n'as pas encore désinstallé l'ancien Qt Creator, tu peux copier le dossier du mingw32 d'ancien Qt Creator à un emplacement différent de celui de l'ancien Qt Creator (tu peux par exemple mettre ça dans C:\Qt\). ensuite tu indiques au Qt Creator 2.6.2 le nouveau chemin du mingw32-4.4.0.
|
|
00
|
|
|
#16 |
|
Invité régulier
![]() Inscription : octobre 2009 Messages : 20 ![]() |
Bonjour
Merci a faridsarl. J'avais déjà tout désinstallé Maintenant j'ai installé QtCreator 4.6.2 avec la librairie Qt 4.8.4 et tout fonctionne implacablement! Salut et à +++ |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com