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 :

insérer une image en background dans QTextDocument


Sujet :

Qt

  1. #1
    Membre régulier Avatar de Alcide_
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Points : 114
    Points
    114
    Par défaut insérer une image en background dans QTextDocument
    Salut,
    Tout est dans le titre, je cherche à insérer une image en background dans un QText document.
    J'ai déjà essayé avec les styleSheet appliqués au QTextEdit, ca marche mais ce n'est pas pris en compte au moment de l'impression.
    Et setBachground() fonctionne par block, alors a part découper mon image et la reconstituer par block je ne vois pas trop ce qu'il faut faire...
    Si quelqu'un a une idée?

    Merci

  2. #2
    Membre éprouvé

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Salut,

    J'ai pas essayé, mais as tu tenté de :

    Creer un QPixmap(ou QImage) à partir de ton image.
    Tu crees ensuite un Brush grâce à ce QPixmap.
    Ensuite tu crees une palette à Partir de ce QBrush.
    Et tu fais monWidget::setBackgroundRole(maPalette).

    Je ne garantis rien, mais c'est la solution qui me semble la plus "plausible".

    G.

  3. #3
    Membre éprouvé

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Bon j'ai essayé rapidement, et apparemment, ça ne marche pas.

    Désolé. Je vais essayer autre chose, j'ai du temps ce matin .


    G.

  4. #4
    Membre éprouvé

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Ah si en fait ça marche, j'utilisais un QBitmap au lieu d'un QPixmap

    voici un bout de code qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    QApplication app(argc, argv);
    	QWidget widget;
    	QPixmap image("C:/Projets_VS2008/MDI2/chat-dans-le-bocal.jpg");
    	QBrush brush(image);
    	QPalette palette;
    	palette.setBrush(QPalette::Window,brush);
    	widget.setPalette(palette);
    	widget.show();
    	return app.exec();
    Par contre, j'utilisais une petite image, donc mon affichage se fait via une mosaïque de cette image. Mais il ne doit pas en falloir beaucoup plus pour avoir une seule image centrée.

    Bonne chance,

    G.

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 033
    Points : 13 968
    Points
    13 968
    Par défaut
    peut être redefinir le paintevent sinon

  6. #6
    Membre régulier Avatar de Alcide_
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Points : 114
    Points
    114
    Par défaut
    Yes, j'avais pas pensé aller voir de ce coté là, j'essai ca dans l'aprem et je vous tien au courant.

    Encore merci!

  7. #7
    Membre régulier Avatar de Alcide_
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Points : 114
    Points
    114
    Par défaut
    Aucun résultat, ca n'a d'effet ni sur QTextDocument (vu que setPalette ne peut pas être appeler), ni sur QTextEdit...

    Enfait il y a un code qui marche mais il n'est pas pris en compte lors de l'impression du document:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monQTextEdit->setStyleSheet("QTextEdit{background-image: url(:/images/photo1.jpg); background-attachment: scroll; background-repeat: no-repeat}");
    peut-etre y a t-il quelque chose à creuser de ce coté là? mais je ne trouve pas quoi...

  8. #8
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 033
    Points : 13 968
    Points
    13 968
    Par défaut
    J'ai regardé un peu, et cela n'as rien avoir apparemment...
    Il faudrai que tu utilise un painter pour mettre ton image et faire un print par la suite. Un truc comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    QPrinter * myPrinter;
    ...
     
    QPainter myPainter(myPrinter);
    myPainter->begin();
    myPainter->drawImage(0,0,myImage);
     
    myTextDocument->print(myPrinter);
     
    myPainter->end()

  9. #9
    Membre régulier Avatar de Alcide_
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Points : 114
    Points
    114
    Par défaut
    Le probleme avec QPainter juste avant l'impression c'est que le contenu de mon QTextEdit n'est plus visible car remplacé par l'image...

  10. #10
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Abesses Voir le message
    Le probleme avec QPainter juste avant l'impression c'est que le contenu de mon QTextEdit n'est plus visible car remplacé par l'image...
    quoi??

  11. #11
    Membre régulier Avatar de Alcide_
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Points : 114
    Points
    114
    Par défaut
    J'avou, je me suis mal exprimé...
    Je vais clarifier les choses:

    1-J'ai un QTextEdit dans lequel j'affiche une facture, il est constitué d'une image bandeau, de texte et de tableaux (j'aimerais qu'elle ait un arrière plan).

    2-Après j'appelle un fonction qui pointe (c'est comme ca que l'on dis?) mon QTextEdit vers un QTextDocument pour l'imprimer.

    Problème:
    Je n'arrive pas à mettre une image en arrière-plan de ma facture...
    Et quand j'utilise QPainter dans ma fonction d'impression cela m'imprime juste l'arriere plan sans le reste de la facture.

    Arriver jusque là et coincer sur ce genre de détail... ca fait mal au ...
    C'est là où on réalise qu'il y a encore vraiment du boulot avant de prétendre savoir développer...

  12. #12
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 033
    Points : 13 968
    Points
    13 968
    Par défaut
    je me suis peut être trompé dans l'ordre..
    Et dans ce sens?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    QPrinter * myPrinter;
    ...
     
    QPainter myPainter(myPrinter);
    myPainter->begin();
    myPainter->drawImage(0,0,myImage);
     myPainter->end()
     
    myTextDocument->print(myPrinter);

  13. #13
    Membre régulier Avatar de Alcide_
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Points : 114
    Points
    114
    Par défaut
    J'ai essayé dans tous les sens possible, soit ca m'imprime j'uste la facture, sois juste l'arrière plan, sois l'un et l'autre mais à la suite chacun sur une page...

    N'y aurais t-il pas moyen de le faire avant la fonction d'impression, à la génération de mon QTextEdit? comme ca le document est terminé et il n'y a plus qu'a lancer une impression standard...

    Je suis désolé mais là, je me sent un peu démuni ...

    Encore merci!

  14. #14
    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
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    En t'inspirant de ce snipet mais en réglant la propriété background-image pour la balise body et non span, tu devrais pouvoir t'en sortir.

  15. #15
    Membre régulier Avatar de Alcide_
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Points : 114
    Points
    114
    Par défaut
    Elas je n'y suis toujours pas arrivé...

    Si quelqu'un à encore des idées?

  16. #16
    Membre régulier Avatar de Alcide_
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Points : 114
    Points
    114
    Par défaut
    Alors...

    J'ai essayé d'insérer tout symplement un document html dans QTextEdit et j'ai remarqué que la balise background="monimage.png" n'était pas prise en compte or bgColor oui...

    Quelqu'un aurais une réponse à apporter à ca?

    Car là est la clef du mistere!

  17. #17
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Salut,
    j'ai testé un peu et sans succé.
    Par contre j'ai trouvé ca :
    http://www.qtcentre.org/forum/archiv...p/t-10174.html
    comme il fait le paint lui même tu pourais t'en inspirer pour ajouter une image peut être

  18. #18
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Au faite, je n'ai pas testé la solution d'irmaden

  19. #19
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Avec la proposition d'irmaden, ca marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    QFile file(fileName);
    if (file.open(QFile::ReadOnly | QFile::Text))
    	{
    	QString css;
    	css  = "body { background-image: url('yeti_rol_tux.jpg'); } ";
     
    	editor->document()->addResource( QTextDocument::ImageResource, QUrl( "yeti_rol_tux.jpg" ), QPixmap( "c:/yeti_rol_tux.jpg" ) );
    	editor->document()->addResource( QTextDocument::StyleSheetResource, QUrl( "format.css" ), css );
     
    	QString html;
    	html = "<html><head>"
    		"<link rel='stylesheet' type='text/css' href='format.css'>"
    		"</head><body>";
    	html+=QString(file.readAll()).remove('\r').replace("\n","<br/>");
     
    	 html+="</body></html>";
     
             editor->setHtml(html);
    	}

  20. #20
    Membre régulier Avatar de Alcide_
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Points : 114
    Points
    114
    Par défaut
    Problème résolu!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    QFile fichier("monFichier.html");
    	if(fichier.open((QFile::ReadOnly | QFile::Text)))
    	{
     
     
    	QString css;
    	css  = "body { background-image: url('monImage.png'); } ";
     
    	monQTextEdit->document()->addResource( QTextDocument::ImageResource, QUrl( "monImage.png" ), QPixmap( "monImage.png" ) );
    	monQTextEdit->document()->addResource( QTextDocument::StyleSheetResource, QUrl( "monFichierCSS.css" ), css );
         QString html;
         html = "<html><head>"
    		"<link rel='stylesheet' type='text/css' href='monFichierCSS.css'>"
    		"</head>";
     
    	html+=QString(fichier.readAll()); 
    	...
            ...
    	 html+="</html>";	
     
     
     
         monQTextEdit->setHtml(html);
    	}
    Encore merci à tous!!!

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

Discussions similaires

  1. Insérer une image en background dans une table
    Par akab48 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 27/01/2015, 14h19
  2. Réponses: 5
    Dernier message: 29/10/2007, 08h42
  3. code HTML pour mettre une image en background dans un menu
    Par Link14 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 16/10/2005, 12h11
  4. Réponses: 5
    Dernier message: 27/09/2005, 09h18
  5. Réponses: 2
    Dernier message: 19/11/2004, 08h54

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