IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Probleme de transmission de parametre


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de haraelendil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 283
    Par défaut Probleme de transmission de parametre
    Bonsoir,

    Voila j'ai un petit soucis, car dans un programme, j'utilise une classe de ma conception nommée Tab2D qui est en faite une classe servant à gérer un arrangement à deux dimensions d'autres objets.

    Or j'essaie ici de l'utiliser pour contenir des objets Cellule héritant directement de QWidget, mais j'ai un soucis sur une methode d'initialisation:

    En effet cette methode a pour but de remplir de tableau avec des Cellule, qui, comme elles sont des Widget, ont besoin d'un Widget parent (la classe ou est créée la Tab2D), or j'ai une erreur assez ennuyeuse lors de la compilations:
    (voici des bouts de code si ça peut aider, s'il en faut plus, dites le )

    dans la classe Ecran (dans le constructeur)(qui hérite elle aussi de QWidget):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    tableau = new Tab2D<Cellule>(i);
    tableau->initialiser(this);
    ma methode de la classe Tab2D:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    template <class T> void Tab2D<T>::initialiser(QWidget* param)
    {
     for(unsigned int i=0; i<largeur*hauteur; i++) tab[i] = new T(param);
    }
    Or j'obtiens un gentil:

    ../../../Qt/4.3.4/include/QtGui/../../src/gui/kernel/qwidget.h In member function `Cellule&Cellule::operator=(const Cellule&)':
    tab2D.hh:83: instanciated form `void Tab2D<T>::initialiser(QWidget*) [with T = Cellule]'
    ecran.cc:11: instanciated from here
    ../../../Qt/4.3.4/include/QtGui/../../src/gui/kernel/qwidget.h:728: error: {QWidget& QWidget::operator=(const QWidget&)' is private
    tab2D.hh:61: error: within this context

  2. #2
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Salut,

    Les widgets et de façon plus générale, toute classe dérivant de QObject ne sont pas copiables. C'est ce que dit le message d'erreur.
    Il faut que tu stockes des pointeurs vers les objets que tu veux, et non les instances directement. Par contre, si c'est un conteneur logique, tu devrais plutôt partir sur QVector ou QList; en en imbriquant 2, tu as ton conteneur à 2 dimensions.

  3. #3
    Membre chevronné
    Avatar de haraelendil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 283
    Par défaut
    Ok merci, j'ai modifié ça en faisant un conteneur de pointeurs, ça compile (aprés je peux pas encore tester dans la pratique lol), j'avais pensé aux vectors imbriqués, mais je me suis dit que ça serait plus facilement gérable avec ma classe, mais je pensais pas galérer autant lol.

    Et sinon, pour être sur, comme maintenant j'ai un tableau de pointeurs, dans le destructeur de ma classe, il faut bien que je delete d'abord tous les pointeurs avant de delete[] le tableau hein?

  4. #4
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Oui et non, ça dépend à qui tu veux donner la propriété de tes pointeurs, si tu imposes ou non la présence d'un parent etc... Sans en savoir plus difficile de dire...

  5. #5
    Membre chevronné
    Avatar de haraelendil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 283
    Par défaut
    Ba le but c'est que une fois que j'ai créé mes objets et stocké mes pointeurs dans mon instance de Tab2D, je n'y accède plus que grâce à elle, aussi bien pour les modifier, réccupérer des infos ou les détruire à la fin.

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    bonour,
    Citation Envoyé par haraelendil Voir le message
    Ba le but c'est que une fois que j'ai créé mes objets et stocké mes pointeurs dans mon instance de Tab2D, je n'y accède plus que grâce à elle, aussi bien pour les modifier, réccupérer des infos ou les détruire à la fin.
    Tant que les QObject que tu y met n'ont pas de parent, normalement ce sera Tab2D à les detruire

Discussions similaires

  1. probleme d'affichage IHM 'Parametre incorrect'
    Par GENERYS dans le forum C++Builder
    Réponses: 5
    Dernier message: 26/11/2004, 16h53
  2. [struts][jsp]Transmission de parametre d'une jsp
    Par chng001 dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 21/10/2004, 18h26
  3. Probleme de cast de parametres
    Par John Fullspeed dans le forum Langage
    Réponses: 3
    Dernier message: 14/10/2004, 08h43
  4. [pgplsql] probleme de passage de parametre
    Par Spoutnik dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 21/05/2004, 01h11
  5. Probleme de passage de parametre a un TQuery
    Par gve21 dans le forum C++Builder
    Réponses: 7
    Dernier message: 15/01/2004, 15h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo