Exemple: impression des lignes d'un MultiLineEdit

Voici tout d'abord un exemple de programme qui imprime le contenu d'un multiLineEdit.

Un multiLineEdit est une zone de saisie de texte sur plusieurs lignes.

Si notre composant s'appelle "e", e->lines() renvoie le nombre de lignes saisies, et e->text(3) renvoie la ligne n°4.

Programme: Impression des lignes du QMultilineEdit e

	   début
	     const int marge = 10;
	     //définition de la marge ici la marge gauche est la même que la marge haute
	    int pageNo = 1;
	    //définition du numéro de page
	    // déclaration de l'imprimante imprimante
	    QPrinter * imprimante;
			//penser à inclure qprinter.h

	    if ( imprimante->setup(this) ) 
	    {   
	    // imprimante->setup(QDialog * parent) affiche une boîte de dialogue 
	    //permettant de sélectionner l'imprimante et ses fonctionnalités
	    //renvoie faux si annulation
	    
		QPainter p;
		//penser à inclure qpainter.h

		if( !p.begin( imprimante ) )              
		// on associe un painter à notre imprimante
		//le painter est une zone où l'on peut écrire tracer des lignes ou dessiner des images
		return;
		//si on n'a pas pû associer le painter à l'imprimante on sort
		p.setFont( lineEditNom->font() );
		ici on donne à notre painter comme police la même police que celle de lineEditNom
		
		int ordonnee        = 0;                    // y-position est l'ordonnée des lignes à écrire
		//obtention des caractéristiques de la police hauteur des caractéres, largeur des caractères, espace entre chaque ligne
		QFontMetrics fm = p.fontMetrics();
		//comme d'habitude on pensera à inclure qfontmetrics.h
		//obtention des caractéristiques de l'imprimante
		QPaintDeviceMetrics metrics( imprimante ); 
		// on a besoin des caractéristiques de la surface d'impression de l'imprimante (largeur, hauteur)
		//pour chaque ligne à imprimer
		for( int i = 0 ; i < e->lines() ; i++ ) 
		{
			//si on arrive en bas de la page
			if ( marge + ordonnee > metrics.height() - marge ) 
			{
			imprimante->newPage();             // changement de page
			ordonnee = 0;                       // retour en haut de la page
		    }
		    p.drawText( marge, marge + ordonnee,
				metrics.width(), fm.lineSpacing(),
				ExpandTabs | DontClip,
				e->text( i );
		    ordonnee = ordonnee + fm.lineSpacing();//mise à jour de l'ordonnée
		}
		p.end();                                // envoi du job à l'imprimante
	      }
	      FIN