Aller au menu - Aller au contenu

Modéliser ses fenêtres avec Qt Designer

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page Précédente  1  2 
Pseudo Commentaire
Page Précédente  1  2 
Hors ligne geenux # Posté le 11/02/2009 à 22:25:36
Vive Qt
Avatar

Ville : Brest
Pays : France métropolitaine

Bon tutoriel.
Tu devrais juste préciser quelque chose pour la partie héritage multiple : il faut mettre la classe héritant de QObject en premier, sinon ça ne compile pas (cf la FAQ Qt sur developpez.com)
Hors ligne ZeroSAMY # Posté le 16/02/2009 à 17:24:01
Avatar
Groupe : Bannis

Je voudrais dire a m@teo "you are my teacher man" ;)
merci bcp pour tout ce que tu fait en fait, ces grace a toi que je me suis mis a programmer avec le c++,et merci pour le tuto :D

mais la j'ai une petit question:si en crée avec QT une fenetre du genre MainWindow (et no Widget qu'est ce qu'il va changer pour la 3 façon "héritage multiple") plz help me :(
Hors ligne ZeroSAMY # Posté le 18/02/2009 à 12:16:09
Avatar
Groupe : Bannis

ces bon j'ai trouver la soluce en quelque sort :o
Hors ligne crycry_damour # Posté le 01/03/2009 à 20:14:32

Bonjour,

Je rencontre quelques soucis avec Qt Designer, je souhaiterais ouvrir une autre fenêtre en cliquant sur un bouton... Je n'arrive pas a faire de "connect" entre mon bouton et ma deuxième fenêtre. Comment puis-je faire? Dois-je le coder à la main?
Merci de vos réponses
Hors ligne saxo74 # Posté le 03/04/2009 à 10:15:12

Citation : Kfoxone
Le problème : lorsque je fais l'héritage multiple avec QWidget , j'avais comme error : no maching function ... . en fait il ne reconnaissait pas setupUi.
Alors je lui ai hérité de QMainWindow qui hérite de QWidget et là tout fonctionne."


Même problème à l'origine, je m'arrachais les cheveux en suivant bien la documentation officiel, qtDoc et biensur le tuto de M@teo. Rien à faire !
J'ai utilisé ta solution ayant rencontré le même problème....Débloqué, merci kfoxone.
Cependant je n'arrive pas à saisir pourquoi cela ne fonctionne pas par le QWidget et cela me chagrine.
Si quelqu'un a une explication logique à ceci, elle est la bienvenue :) .
Bonne continuation a tous les zeros !!!
Hors ligne wazza6 # Posté le 14/04/2009 à 01:14:26

Moi la compilation plante en utilisant la première méthode pour afficher les fenêtres... :( o_O
C:/Users/Administrator/Documents/CC++/Qt/texteditor/texteditor/../main.cpp:10: error: `texteditor' is not a member of `Ui'

C:/Users/Administrator/Documents/CC++/Qt/texteditor/texteditor/../main.cpp:10: error: expected `;' before "ui"

C:/Users/Administrator/Documents/CC++/Qt/texteditor/texteditor/../main.cpp:11: error: `ui' was not declared in this scope

C:/Users/Administrator/Documents/CC++/Qt/texteditor/texteditor/../main.cpp:11: warning: unused variable 'ui'

... ça c'est du chinois pour moi :-°
J'utilise Qt Creator comme IDE pour la Qt, c'est plus simple que de configurer Code::Blocks ou d'utiliser la console. Que j'utilise la console pour compiler , Qt Creator ou la console , ça plante (même si je tapes:
Code : Console
uic -o monui.ui

avant de compiler)

Donc je crois que m@teo devrais adapter son code à la nouvelle version de Qt qui semble ne pas fonctionner de la même manière.

Alors moi je dois enlever 5 points au tutoriel mais tout le reste est parfait alors 15/20!

Ah et si quelqu'un sait comment règler ce problème ça serait très apprécié. ( gabars@live.ca )

A+ les (autres) zér0s.

-@@##**!! Pourquoi mon programme fonctionne pas?
- Eh ben... c'est parce que tout ce qu'il y a dans ton main() c'est "continue"
- Ouais! C'est pour que mon programme se code tout seul! Je lui ai dit de se continuer tout seul :D . Je suis tellement intelligent , personne n'a pensé à faire ça avant!
- o_O :euh: ... si tu veux ... :-°
 
Hors ligne oyomaster # Posté le 14/04/2009 à 19:24:32

Salut a tous, j'ai un petit probleme:

Fencalculatrice.h:8: error: expected class-name before '{' token


Fencalculatrice.cpp:6: error: 'setupUi' was not declared in this scope


pourtant , j'ai fait exactement ce qui était dit dans l'héritage multiple.
Qui aurait une solution svp?
Hors ligne oyomaster # Posté le 14/04/2009 à 19:40:49

Désolé pour, le double post. Tout est résolu. j'avais oublié de modifier le nom de ma fenêtre.
Hors ligne oliviersn7 # Posté le 25/06/2009 à 14:51:56

Bonjour à tous,
Merci pour ce tutoriel. Grace à vous, nous avons beaucoup appris sur Qt.
Mais voilà, nous sommes encore bloqué, et cette fois-ci, pas moyen de comprendre, malgré l'aide en ligne de Qt.

Nous en sommes à faire une calculatrice (fin de la leçon sur Designer) avec la méthode 2 : héritage simple, et nous avons cette erreur :

error: no matching function for call to `Ui::FenCalculatrice::setupUi(FenCalculatrice* const)'

Erreur en référence à FenCalculatrice.cpp ligne 5 "ui.setupUi(this);"
Nous avons la même erreur avec la méthode 3.

Merci d'essayer d'éclairer nos lanternes.^^
Hors ligne oliviersn7 # Posté le 29/06/2009 à 11:25:38

Par ailleurs, nous essayons d'utiliser les .ui de Designer, mais je ne trouve aucun exemple sur Internet pour incorporer une deuxième fenêtre à un projet, et la relier à la première.

Vous avez déjà vu ça quelque part ?
Hors ligne Little Spoon # Posté le 15/07/2009 à 19:15:31
Sérial Kuiller en série
Avatar

Avis : Très bon

Ville : Lanne
Pays : France métropolitaine

très bon cour, comme d'habitude.

Mais juste pour savoir, l'auto-connecte, ça marche aussi avec des varible à transmettre ?

Parce que j'ai essayé, et ça n'a pas marché...
Hors ligne anonyme # Posté le 01/10/2009 à 08:36:11

Moi j'ai un petit probleme, je crois que qtdesigner n'est pas installé sur mon ordi meme quand je lance une recherche avancer partout je ne trouve que des dll et des include ... ma version de qt est dans : C:\Qt\2009.03 et je trouve etrange de pas avoir une chose du genre C:\Qt4.5\ ou autre et je me demande donc si il faut telecharger une autre version de qt ("C:\Qt\2009.03" a été telcharger sur le site officiel de qt)
Hors ligne anonyme # Posté le 01/10/2009 à 08:42:48

ah non !! c'est bon j'ai trouver (enfin) ^^ , enfait le truc c'est dans cette nouvelle version il a fusionné avec qtcréator (ide) il faut faire nouveau et selectionné qtdesigner tout simplement , j'utilisais code::block c'est pour ca que je l'avais pas vu ^^
Hors ligne SonicProgramation # Posté le 26/10/2009 à 18:40:31
Avatar

:colere: J'ai que des erreur mais je crois que QT on suprimer dans le 4.3.3
Tous ce qui il y avait dans l'ancien enfin presque...

Le tuto 1: Compiler votre première fenetre QT marchait mais les autre ne marche pas
Alors je suis obligé de réinstaller QT :( J'ai le meme problème que vous :'(
:-°

Citation
HS:
Aussi quand on desintale QT sa met encore quelque fichier
Hors ligne soyel # Posté le 28/10/2009 à 17:48:19
We FTW!
Avatar

Je precise aux linuxien que l'utilisation de character spéciaux dans la comboBox (+,-,×,÷) ne semble pas marcher de façon conventionnel.

En effets je recupere le choix d'utilisateur grace a la méthode "currentText()" sur la comboBox, tout marche sauf la multiplication / division si j'utilise les caractère suivant: ×, ÷ (le label ne change pas si j'appuis sur le pushButton "=").

Je vais demander sur les forums voir si cela peut etre régler d'une autre façon et j'éditerai ici je trouve la solution à se petit problème (qui ne provoque aucune erreur / warning à la compilation).

Edit: utilisez la méthode currentIndex() à la place, ça marche bien mieux :honte:
Secret (cliquez pour afficher)
Code : C++
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
void WidgCalculatrice::on_egalButton_clicked()
{
    if(choixOperation->currentIndex() == 0)      // addition
        resultatLabel->setNum(nb1->value() + nb2->value());
    else if (choixOperation->currentIndex() == 1)// soustraction
        resultatLabel->setNum(nb1->value() - nb2->value());
    else if (choixOperation->currentIndex() == 2)// multiplication
        resultatLabel->setNum(nb1->value() * nb2->value());
    else if (choixOperation->currentIndex() == 3)// division
        resultatLabel->setNum(nb1->value() / nb2->value());
}

あの人は頑張っているので足を引っ張らないでください! >_<
 
Hors ligne NuDub # Posté le 10/01/2010 à 17:58:56
Mac, M$ 'n Linux user 'n WHAT
Avatar

Ce chapitre est super léger :(

Par contre sur mac la petite calculatrice compile sans soucis mais j'ai beau clicker sur Egal il se passe rien.

j'ai donc repris l'exemple en recopiant ce que tu as fait M@téo et pareil, la compile marche bien pas d'erruer ou Warning.

Je met deux nombre avec l'addition puis je fais égale et là rien du tous.

@Soyel : Sur Mac y a peut être aussi ce soucis alors.

J'ai trouvé où était l'erreur, j'avais écris pour la déclaration des slot :

Code : C++
1
private: slots


au lieu de (par contre je sais pas comment surligné )

Code : C++
1
private slots:


c'était le ";" qui était mal placé, enfin xcode pourrai au moins mettre un Warning là dessus car sur un gors code c'est un coup à péter un câble car là déjà j'ai failli craquer.

Et nicquel ta méthode Soyel, par contre j'ai pas testé d'autre méthode comme currentText comme tu parlais au début.
car un currentIndex me parait plus logique.

Par contre j'ai pas saisi toujours comment donné un titre à sa fenêtre depuis QtDesigner, je veux dire que oui je peux le changer à la limite dans mon constructeur, mais je comprend pas où on met le titre final de la fenêtre.

Car j'ai enregistré le fichier comme sur l'exemple, donc là Ok ça c'est pour le fichier dans le projet.

Ensuite le ObjectName ça c'est le nom pour dans le code, la Class.

mais ensuite.

car là sans toucher au constructeur, je lance mon .app, il s'appel FORM, et toi M@téo il s'appel Mini-calculette, donc où tu as gérer ça, car là je vois pas.

Je pense q'un tuto dédié à QtDesigner aurais sa place sur le SdZ, mais après j'imagine que tous le monde n'est pas intéressé par cette outils.

Le tuto C++ est top mais ce chapitre est survolé, c'est dommage.
Surtout que sa permet de vraiment bloquer sur le code sans trop se soucier de l'apparence je dirais de départ de l'application, même si on fignole à la mano après.

Image utilisateur
 
Connecté antoyo # Posté le 11/02/2010 à 03:05:27
GNU/Linux forever!
Avatar

Études : Cégep de rimouski

Salut,
c'est très bien, sauf que je n'utiliserai pas Qt Designer : je préfère faire tout à la main...

Par contre, il faudrait indiquer que, pour utiliser l'Auto-Connect sans fichier.ui, il faut appeler QMetaObject::connectSlotsByName(this); après avoir modifier le nom des widgets avec objet->setObjectName(); .

Je n'ai pas trouvé d'explications sur Internet (sauf d'appeler la méthode setObjectName() dans la doc, mais il me restait quand même à trouver qu'il fallait appeler la méthode publique connectSlotsByName() après ceci), mais j'ai fini par deviner...
Mais bon, il faudrait le préciser, à mon humble avis.

Mon extension pour Chrome/Chromium :
SaveAllPasswords : vous permet d’enregistrer vos mots de passe sur tous les sites Web (même ceux qui ne veulent pas :D ).
 
Hors ligne @lois # Posté le 16/02/2010 à 21:52:25
Qui ne tente rien n'a rien !
Avatar

Avis : Très bon

Bonjour,


J'ai un petit problème, quand j'appelle les objets il me met l'erreur Citation
object missing in reference to "Ui_Widget::nb1"

Alors que l'objet est bien là.

Si quelqu'un peu m'aider.

Merci d'avance

La politesse ne coûte rien mais achète tout.


toa écrir com sa moa v'nir texplice se qe g'en pans ! :diable:


Regardez votre clavier .... Et oui !!! miracle,! il y a toutes les lettres de l'alphabet ! Alors utilisez les !!!


 
Hors ligne ssidha # Posté le 08/03/2010 à 18:56:27

Bonjour; je suis un debutant du Qt. je viens de realisr un fenêtre á l'aide de QtDesigner á l'aide d'un widget ça complie et fonctionne comme sur des roulettes. Mais mon objectif est de le faire avec un mainwindow et c'est lá où les chosent se compliquent car ça donne toujours ds erreurs quand je compile. quelqu'un peu en savoir comment le fire SVP!!!. Merçi
Hors ligne Rodinho67 # Posté le 23/03/2010 à 00:31:26

Bonjour,
Désolé de poster ma question ici mais je n'arrive pas a créer un sujet dans le forum :

Après de loongues recherches sans trouver exactement comment faire, je vous pose mon problème :

Je fais une interface graphique, que j'ai fait avec Qt creator et j'ai "relié" une comboBox avec un QLabel (signal/slot). En fait, le QLabel contient une température en degré celsius, disons 13; ma comboBox contient trois items : le premier °Celsius (par défaut), le deuxième °Fahrenheit, et le troisième °Kelvin.

J'aimerais que lorsque l'utilisateur clique sur l'item "°Kelvin", la valeur contenue dans le QLabel soit automatiquement convertit en Kelvin (la fonction de conversion étant une simple opération de multiplication, division et addition). Et ainsi de suite.

Et je ne trouve pas comment faire pour relier le choix de l'utilisateur dans la comboBox à la valeur contenue dans le QLabel !! Aidez moi !! o_O
Hors ligne Eti-N # Posté le 27/03/2010 à 08:57:32
↓ Terran contre Zerg :( ↓
Avatar

Ville : Challes-les-eaux
Pays : France métropolitaine

J'ai absolument adoré ce chapitre... Merci encore, M@théo :) .

Edit:
vous le faites exprès ou vous êtes débiles ? Il y a un avertissement exprès: ne postez pas vos questions dans la section "Commentaires" allez plutôt sur le forum, et vous les postez dans les commentaires. :colere:

Moi je dit: ROFL ^^
 
Hors ligne morandiere # Posté le 13/04/2010 à 13:49:51

Bonjour,

j'ai édité une fenetre avec QtDesigner et j'ouvre fenetre.ui pour ajouter une connexion:
QObject::connect(pushButton, SIGNAL(clicked()), label, SLOT(setPixmap(QPixmap(QString::fromUtf8("image2.jpg")))));
Cela a pour but de modifier l'image affichée qui est image1 par defaut. Or un click sur mon bouton ne fait absolument rien!
Une idée ?

Merci :)

L'amour pour épée, l'humour pour bouclier.

De retour !!!!
:D
 
Hors ligne georgedegrop # Posté le 01/06/2010 à 08:24:26

Avis : Très bon

Ville : Lans en vercors
Pays : France métropolitaine
Études : Lycée Champollion - Grenoble

comme d'hab très bon tuto ! :p

je pense que dans la lancée des programmes à utiliser offerts par Qt ça aurait été bien de parler de Qt creator : il regroupe Qt designer,la doc,un éditeur de texte et permet de compiler sans passer par la console.

je n'ai jamais fait de tuto alors j'essayerais peut-être de faire mon premier sur ce logiciel sauf si M@teo préfère en faire un lui-même pour le mettre dans le cours.

encore merci pour ce tuto (et aussi pour les autre)

il y a 10 types de personnes sur terre : ceux qui comprennent le binaire et ceux qui ne le comprennent pas

il me semble que je l'ai lu dans les citations de mon agenda mais je ne les retrouve pas ...
En fait c'est peut-être de moi :D
 
Hors ligne zerozeroun # Posté le 16/12/2010 à 11:17:50
Usager=Inconscient+Exigeant
Avatar

Avis : Très bon

Très bon tuto! La classe, comme toujours, chez matéo!!! :)

0.0.1
IDE Code::Block svn build rev 7075
OS Ubuntu 11.10
 
Hors ligne cocq # Posté le 20/01/2011 à 10:35:31

Bonjour,


Je voudrais également utiliser ce fameux héritage multiple mais rien à faire, j'ai beau modifier mes programmes à partir du tuto et des forums : je n'arrive pas à le faire marcher et "setupUi" n'est toujours pas reconnue à la compilation.

Comme il semble que ce tuto date d'une ancienne version et que tous les copier-coller des messages du forums ne sont pas forcément les bons, je pose la question suivante :

Est-ce qu'il existe un zip avec une version qui marche de cet exemple, afin que je trouve ou est mon problème?


merci d'avance!
Hors ligne cocq # Posté le 20/01/2011 à 13:11:54

j'ai fini par trouver une solution

en utilisant l'héritage multiple, si ce que je fais avec Designer est une "boite de dialogue avec deux boutons", je dois écrire

"class dialog : public QDialog, private Ui::Dialog"

et non pas

"class dialog : public QWidget, private Ui::Dialog"

comme on trouve partout.


En faisant comme ça, mon code

dialog::dialog(QWidget *parent) :
QDialog(parent)
{
setupUi(this);
}

passe très bien à la compilation.


Concernant l'appel à partir d'un bouton dans la MainWindow, le code suivant est possible et marche aussi très bien :

void MainWindow::on_pushButton_clicked()
{
dialog ex;
ex.exec();
}


A++
Hors ligne quentindu78 # Posté le 28/01/2011 à 16:52:24
Avatar

Je trouve cela dommage que le tutoriel ne prenne pas en compte Qt Creator car c'est beaucoup plus facile à utiliser comme outil pour compiler :'(
Hors ligne sleepyfranck # Posté le 27/07/2011 à 12:39:59
Avatar

Avis : Très bon

L'ensemble de ce très bon tutoriel était effectivement nécessaire pour faire fonctionner Qt Creator.

En effet, je trouve QT Designer très pratique en gain de temps pour la création des fenêtres. :D

Par contre, je trouve peu lisible la création d'un .h et un .cpp quasi vides où tout se trouve concentré dans le ui.h o_O , d'où la compréhension du cours nécessaire pour réorganiser l'ensemble.

Personnellement, comme j'utilise Code::Block depuis le début:
-je crée mon projet avec
-j'utilise le 'Class Generator' du TP pour faire la structure de mes .h et .cpp
-je vais pomper les éléments dans le ui.h
-je remplace dans le code généré le nom de la classe par 'this'
-je fais hériter mes class de QWidget ou autre classe adaptée
-et surtout je réorganise le code généré par Qt Creator :colere2: , parce que franchement, la première chose qu'on m'a appris c'est L'INDENTATION:
Je cite CysBoy (voir excellent tuto de JAVA http://www.siteduzero.com/tutoriel-3-1 [...] -en-java.html ):

Citation : CysBoy
Par contre, je vais TRÈS FORTEMENT INSISTER sur un point : regardez l'affichage du code : remarquez le petit décalage entre ma première condition et ma deuxième.
On appelle ceci l'indentation, et comme c'est écrit en gros, en gras et en rouge, c'est que c'est hyper important !

En effet, pour vous repérer dans vos futurs programmes, cela sera très utile. Imaginez deux secondes que vous avez un programme de 700 lignes avec 150 conditions, et que tout est écrit le long du bord gauche. Vous allez vous amuser pour retrouver où commence et où se termine une condition. Je vous le garantis !
Vous n'êtes pas obligés de le faire, mais je vous assure que vous y viendrez.

-je transforme par exemple les
Code : C++
1
2
3
4
buttonBox = new QDialogButtonBox(this);
buttonBox->setObjectName(QString::fromUtf8("buttonBox"));
buttonBox->setOrientation(Qt::Horizontal);
buttonBox->setStandardButtons(QDialogButtonBox::Close);

en
Code : C++
1
2
3
4
buttonBox = new QDialogButtonBox(this);
        buttonBox->setObjectName(QString::fromUtf8("buttonBox"));
        buttonBox->setOrientation(Qt::Horizontal);
        buttonBox->setStandardButtons(QDialogButtonBox::Close);

C'est bète, mais ça éclairci vachement! ^^

Mais après tout, c'est ça l'objectif du tuto: nous donner des outils pour pouvoir être autonome et coder de nos propres ailes. :pirate:
Merci Nanoc et M@theo21
Hors ligne anonymous tours # Posté le 20/02/2012 à 17:10:39

Bonjour, je voulais vous faire part d'une erreur dans le tuto (rien de grave ^^) :

dans la section "Configurer les signaux et les slots" ( http://www.siteduzero.com/tutoriel-3-1 [...] tml#ss_part_3 )
Vous parlez du symbole d'éléctricité "masse", mais c'est bien celui de la "terre" qui est utlilisé par Qt Designer ;)
Hors ligne dutchy # Posté le 15/05/2012 à 04:09:08

http://web.univ-pau.fr/~puiseux/enseignement/python/tuto-PyQt.12(designer).pdf

tiens c'est marrant... même tuto et pas même auteur...
Pour accéder à cette section
Connectez-vous !
connexion_rpx