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