Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.9.1 - Qt Creator : 4.4.0 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

[Qt4] Deux problèmes

December 2006 modifié dans Année 2006
Bonjour à tous !

1er Problème
Alors en fait ça vient des fichiers d'en tête de Qt, au départ j'avais mis #inculde , comme dans la doc, seulement ça ne voulais pas compiler donc j'ai recherché les fichiers dans /usr/... et j'ai trouvé tous les fichiers sans majuscule et avec des .h, j'ai donc modifié mon programme et maintenant ça marche, seulement comme c'est aps tellement à la norme je voulais savoir pourquoi chez moi c'était comme ça ...
Donc voila !
Si quelqu'un a une solution autre que renommé un à un tous ces fichiers (ce qui n'est pas sur de marcher d'ailleurs) pour avoir des fichiers genre : QApplication au lieu de qapplication.h; je suis ouvert à toute proposition ...

2nd Problème
Voila maintenant plusieurs jours que je suis en train de coder le même petit programme assez banal, et voila plusieurs que je résoud un problème pour tomber sur un autre ... Or le dernier problème que j'ai est plus bizarre que les autres c'est pourquoi je vous demande votre aide ...
En fait dans le programme j'affiche un petit message de bienvenue et je demande de cliquer sur continuer.
Une fois ceci fait je redimensionne la fenetre et je demande de cliquer sur quitter.
En fait tout marche jusqu'à ce qu'il faille appuyer sur quitter.
En effet j'arrive à appeler un nouvelle fonction lorsque l'utilisateur clique sur terminer.
Dans cette fonction je redimensionne la fenetre et je crée le bouton quitter.
Or voici ce qui se passe: la fenetre est redimensionnée, mais le bouton quitter n'est pas crée et les anciens boutons ne sont pas supprimés :(
Donc voila mon code :

main.cpp
#include "main.hpp"

int main(int argc, char **argv)
{
QApplication Fenetre(argc, argv); // création de la fenetre
QApplication::setFont(QFont("Comic Sans MS", 18, QFont::Bold));// on modifie la police de l'application.

MonWidget wFenetre;

wFenetre.show(); // on affiche la fenetre 1

return Fenetre.exec(); // on a fini
}
main.hpp
#include <qapplication.h>
#include <qpushbutton.h>
#include <qfont.h>
#include <qwidget.h>

using namespace std;

class MonWidget : public QWidget
{
Q_OBJECT;

public :
MonWidget(QWidget *parent=0);
int valeur;
public slots :
void afficher();
};
methodes.cpp
#include "main.hpp"

MonWidget::MonWidget(QWidget *parent)
:QWidget(parent)
{
setWindowTitle("Premiere application Qt4");
resize(500, 250);

QPushButton *Texte = new QPushButton(tr("Bienvenue dans ma \npremiere application Qt !"), this);
Texte->setGeometry(5, 5, 490, 185);

QPushButton *Bouton = new QPushButton(tr("Continuer"), this);
Bouton->setGeometry(5, 195, 490, 50);

connect(Bouton, SIGNAL(released()), this, SLOT(afficher()));
}

void MonWidget::afficher()
{
// redimensionnement et personnalisation de la fenetre
setFixedSize(200, 50);
setWindowTitle("Au revoir");
QPushButton *Quitter = new QPushButton("Quitter", this);
Quitter->setGeometry(10, 10, 180, 30);
Quitter->setFont(QFont("Times", 15, QFont::Normal));

QObject::connect(Quitter, SIGNAL(clicked()), qApp, SLOT(quit()));
}
Bon ben merci d'avance de vos réponses ...

Réponses

  • QApplication et les autres -> Qt4
    qapplication. h et les autres .h ->versions antérieures

    Concernant tes boutons, pourquoi ne les détruis tu pas dans ta méthodes afficher() (ou les cacher avec la méthodes hide() je crois)
    Quand au bouton Quitter, as tu essayé show() ?

    rocsan
  • December 2006 modifié
    Salut !
    Merci de ta réponse !
    Alors ce qui est bizarre c'est que j'ai bien installé Qt4 ...
    M'enfin bon ça c'est pas grave, ça gêne en rien mon programme.
    Par contre, j'ai pas fait de show, faudrait que j'essaye ^^
    Sinon j'ai essayé d'envoyer les boutons à afficher pour les détruires ensuite mais je n'arrive pas à les envoyer donc ...
    Faut que j'essaye de les détruire comme ça sans les envoyer ?

    EDIT: Je viens d'essayer Quitter.show(), this.show(), qApp.show(), aucun ne marche ... comment faire ?
  • Salut,

    Tout d'abord, qu'appelles-tu "envoyer"??
    Pour cacher les boutons, faut avoir les avoir déclaré comme membre de ta classe. Pour l'instant, tu positionnes 2 widgets au même endroit, forcèment, ça passe mal.

    Petit conseil au passage: tu n'as pas besoin d'écrire QObject::connect lorsque la classe dérive de QObject.

    Pour ce qui est de ton install, elle est fort probablement foireuse, genre y'a des restes de Qt3. Un utilisateur Linux pourra plus te conseiller, si le problème que tu n'as pas encore été décrit dans la section installation ;)
  • Oui merci pour le QObject je sais aps pourquoi je l'ai mis ...
    Sinon peux-tu m'expliquer comment faire des boutons membres de ma classe ? PArce que je vois pas très bien comment faire ...
    Merci d'avance !
  • Ben...
    class MaClasse : public QWidget
    {
    [...]
    private:
    QPushButton *btn1;
    QPushButton *btn2;
    }
    J'ai l'impression que ton niveau C++ est proche de 0; si c'est bien le cas, je te conseille assez fortement de laisser tomber les interfaces le temps d'apprendre au moins les bases avec des programmes consoles.
    La complexité de tous les frameworks est telle que tu ne peux tout simplement pas jouer aux apprentis sorcier en espérant que les lignes fonctionnent toutes seules. Bien que l'article de ma signature dise le contraire :D
  • December 2006 modifié
    Non mais en fait j'étais un peu troublé parce que moi j'utilisai avant que des variables basique dans mes classes, genre :int nombre_max; ...
    Donc voila c'était simple mais là comme la façon d'initialiser était ... différente je savais pas trop comment faire ...
    En tout cas merci ça a marché je peux supprimer les anciens boutons, et grace à un show() mon bouton quitter s'affiche !

    Voila sinon j'ai pas encore eu le temps de me renseigner pour mon install je vais faire une petit recherche sinon je poserai la question ...

    Merci de votre aide et joyeux noel !
  • Dark-Side said:
    Alors ce qui est bizarre c'est que j'ai bien installé Qt4 ...
    Sur quelle plate-forme ? Parce que sur Linux il est probable que Qt 3 soit déjà installé, en plus de Qt 4.
  • Sous Kubuntu 6.10
    J'espère que tu pourra m'aider parce que malheureusement sur le forum de Kubuntu y'a pas foule :S ...
  • Eh bien sur Kubuntu Qt 3 est déjà installé. Du coup si on lance qmake c'est celui de Qt 3 qui est lancé par défaut.
  • Donc je fais quoi ?
    Je laisse comme ça ?
  • Sous Kubuntu Edgy il faut installer tout es paquets de Qt4 et la commande qmake est : qmake-qt4.

    P@sNox,
  • December 2006 modifié
    J'utilise une Kubuntu 6.10 justement et je n'ai pas ces problèmes. Je viens de vérifier avec Adept : concernant qt3, j'ai ces paquets installés :
    - libavahi-qt3-1
    - libqt3-mt
    - python-qt3
    Par contre, concernant qt4, j'ai ces paquets installés :
    - libqt4-core
    - libqt4-dev
    - libqt4-gui
    - libqt4-qt3support
    - libqt4-sql
    - python-qt4
    - qt4-designer
    - qt4-dev-tools
    - qt4-doc
    - qt4-qtconfig

    Si tu es passé de la Kubuntu 6.04 à la 6.10 en mise à jour, il se peut que tu aies des problèmes car les librairies QT4 de la Kubuntu 6.04 étaient foireuses.
  • December 2006 modifié
    Non justement c'est bizarre, je l'ai installé depuis le liveCD car ma mise à jour avait foirée :S
    Sinon j'ai les paquets suivants pour qt3 :
    - libavahi-qt3-1
    - libqt3-mt
    - python-qt3
    Et ceux là pour qt4 :
    - libqt4-core
    - libqt4-dev
    - libqt4-gui
    - libqt4-qt3support
    - libqt4-sql
    - python-qt4
    - qt4-dev-tools
    - qt4-doc

    Voila je vais essayer d'installer qt4-qtconfig et je vais aussi essayer le qmake-qt4 ...
    Je vous dis ce que ça donne ;)

    EDIT: Je sais pas pourquoi mais sans avoir fait le qmake-qt4 ça marche :S
    Bizarre parce que je pense pas que le qt4-qtconfig y soit pour quelque chose ... enfin bonb je vais pas me pleindre :)
    Merci de votre aide !
Connectez-vous ou Inscrivez-vous pour répondre.