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 :

Dessiner un QWidget sur buffer


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de gassi64
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 255
    Par défaut Dessiner un QWidget sur buffer
    Bonjour,

    ma question va paraitre bizarre, mais je n'ai pas trouvé ça ailleurs.
    Est il possible de "dessiner" des composants Qt, style QLabel, QPushButton,... sur un buffer récupérable par un autre programme qui utilise simplement ce buffer pour le dessiner à l'écran?

    Si ce n'est pas possible directement, je supposais qu'une simple capture d'écran du composant, après création et affichage, pouvait former ce buffer utilisable ailleurs mais je redoute des problèmes de rapidité et de performances suite à cette technique.

    Si vous avez la moindre idée, je suis preneur.
    Merci

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Pas compris ... Ton but est d'inclure des "photo" d'items Qt sur une image?

    Ou tu veux ajouter des items Qt sur une scene 3D ?

    Je ne comprends pas ce que tu entends par "buffer". Pourrais tu etre plus précis ? des faux screenshots seraient les bienvenues .

    G.

  3. #3
    Membre éclairé Avatar de gassi64
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 255
    Par défaut
    oui lol c'est pas clair je m'en doutait.

    Je voudrais faire une sorte de bibliothèque de ... composants Qt :
    Concrètement, je suis dans un programme Ma_Qt_Bibliothèque qui charge une dll qui elle lui fournit les images des composants Qt dessinés.

    Après le but c'est de disposer de plusieurs dll de différentes bibliothèques perso fournissant différents styles de même composants Qt MAIS juste le dessin du composant avec le style voulu.

    Pour gérer les styles, je redéfinirais un proxy sur QStyle mais seulement si je peux au moins avoir ces composants Qt sur mémoire pour les réutiliser ailleurs...

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Ok, je vois un peu mieux ce que tu veux faire. Je ne peux pas vraiment t'aider, car je n'ai aucune idée.

    As tu regardé l'exemple fourni "Embedded Dialogs" ? (dans qtdemo). Les widgets sont "actives" dans cet exemple, mais il y a un rendu dans un QGraphicsView qui peut peut être ressembler à ce que tu veux faire.

    Bonne chance,

    G.

  5. #5
    Membre éclairé Avatar de gassi64
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 255
    Par défaut
    Effectivement, j'ai testé et l'idée est là, mais ici c'est un form UI qui est embarqué et recopié et affiché en série dans le QGraphicsView.

    Cependant l'objet QGraphicsProxyWidget est intéressant.
    Je vais regarder s'il n'y a pas une méthode héritée qui permet de passer tout ça en ByteArray ou QByteArray, ou alors peut être passer par le QDataStream...

    En tout cas merci pour l'info, ça me donne une piste!

  6. #6
    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,

    Tu peux créer un QImage (créer avec la taille du widget à rendre, cf sizeHint(), ainsi que le format d'image que tu préféres (ARGB32 etc...)), puis utiliser la fonction QWidget::render qui prend un QPaintDevice en paramètre.
    De là, tu peux accéder au buffer de l'image (gaffe au padding des lignes) que le programme principal peut lire si tu lui passes les infos nécessaires (résolution et format).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Dessiner en cliquant sur un bouton
    Par had182 dans le forum MFC
    Réponses: 4
    Dernier message: 22/01/2006, 21h26
  2. Dessiner un DIB sur un TForm ou TPanel
    Par Neilos dans le forum C++Builder
    Réponses: 6
    Dernier message: 14/11/2005, 23h46
  3. Dessiner un rectangle sur une forme
    Par Neo41 dans le forum MFC
    Réponses: 6
    Dernier message: 13/08/2005, 01h08
  4. Dessin à la volée sur composant transparent
    Par orelero dans le forum 2D
    Réponses: 1
    Dernier message: 28/07/2005, 17h12
  5. Réponses: 3
    Dernier message: 29/06/2005, 14h29

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