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

Discussion :

QGraphicsTextItem et QGraphicsItem

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 84
    Par défaut QGraphicsTextItem et QGraphicsItem
    Bonjour, j'ai deux questions.

    Premièrement:

    Dans la fonction paint d'un QGraphicsItem re-implémentée:

    Le code suivant fonctionne et il affiche le text "Bonjour" comme il devrait.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //Inutile pour cet exemple mais le rectangle et le texte utilise les même point
    //pour dessiner
    QRectF rectF(_geoLocation.x()+50, _geoLocation.y()+85,400,400);
    painter->drawText(_geoLocation.x()+50,_geoLocation.y()+85,"Bonjour");
    Le problème c'est que j'ai besoin d'écrire du texte sur plusieurs lignes, donc je me suis
    tournée à la fonction drawText qui prend un QRectF:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    QRectF rectF(_geoLocation.x()+50, _geoLocation.y()+85,400,400);
    painter->drawText(rectF,"Bonjour");
    Aucun texte n'est afficher. Je ne sais pas pourquoi d'ailleurs. Je dessine un rectangle en passant rectF et le rectangle lui par contre est bien dessiner. Je n'ai aucune idée pourquoi le texte ne s'affiche pas.

    Deuxièment,


    J'essaie de mettre une bordure à l'aide du CSS à un QGraphicsTextItem et cela ne fonctionne pas. Max-width, border-radius, opacity non-plus. Par contre color et background-color marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    //Ici border-radius ne marche pas, mais background-color oui!
    QString noteStr= "<div style=\"background-color:#FFFF7A; border-radius:4px;\""
                                     "><b>"+titre+"</b><br/>"+desc+"</div>";
     
        QGraphicsTextItem *textItem = new QGraphicsTextItem("");
     
        textItem->setHtml(noteStr);
        _scene->addItem(textItem);
    Merci... salut.

    P.S QT 4.6 Unix

  2. #2
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Citation Envoyé par Yakuzan Voir le message
    Aucun texte n'est afficher. Je ne sais pas pourquoi d'ailleurs. Je dessine un rectangle en passant rectF et le rectangle lui par contre est bien dessiner. Je n'ai aucune idée pourquoi le texte ne s'affiche pas.
    C'est bien étrange, aucun problème chez moi. Tu es sur que tu n'as pas une autre peinture qui cache le texte. Je te conseillerais d'essayer avec un exemple propre si tu as beaucoup de code pour voir ce qui va pas. Sinon donne nous plus de code car là l'utilisation de la fonction est correcte.

    Citation Envoyé par Yakuzan Voir le message
    J'essaie de mettre une bordure à l'aide du CSS à un QGraphicsTextItem et cela ne fonctionne pas. Max-width, border-radius, opacity non-plus. Par contre color et background-color marche:
    Cette fois ton utilisation est incorrecte Il ne s'agit pas de CSS mais de QSS, une adapation que Qt en fait. Pour cela, tu dois te retourner vers la page de référence pour regarder ce qui est possible. Si tu regardes la liste des propriétés QSS, tu verras que les propriétés que tu essayes d'utilisés ne supportent pas le type d'objet sur lesquels tu essayes de les appliquer.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 84
    Par défaut
    Merci pour la parti QSS. En ce qui concerne le QGraphicsItem et le texte dans le rectangle je n'ai aucune idée de ce qui le provoque.

    Je ne peux pas utiliser de coordonnées simple puisque je travaille en mètre sur ma scène. Je vais continuer à inspecter le problème, mais je ne vois pas vraiment ce qui pourrait cause le problème. J'ai entendu parler de forte transformation qui peuvent étirer du texte jusqu'à sa disparition, mais bon si jeu peux dessiner au QPoint(x,y) je devrais être capable de dessiner au QRect(x,y,w,h)...

    Je n'ai pas vraiment plus de code que ça dans la classe. Je m'assure de dessiner au dessus des autres éléments à l'aide de la fonction setZIndex.

    Je peux très bien dessiner un drawRect(rectF...) et il s'affichera correctement. Le texte lui par contre...

Discussions similaires

  1. [QGraphicsItem] Propagation Hover Events
    Par Gulish dans le forum Qt
    Réponses: 10
    Dernier message: 22/07/2009, 15h19
  2. QGraphicsItem avec transparence par addition
    Par myst6re dans le forum Qt
    Réponses: 4
    Dernier message: 01/07/2009, 11h59
  3. QGraphicsItem fils qui ne s'affiche pas
    Par EntraX666 dans le forum Débuter
    Réponses: 2
    Dernier message: 07/03/2009, 03h51
  4. Positionner un QGraphicsItem
    Par EntraX666 dans le forum Débuter
    Réponses: 4
    Dernier message: 05/03/2009, 15h11
  5. Réponses: 13
    Dernier message: 24/04/2008, 10h52

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