Imprimer un un qwtplot
Résolu
twiiiix
Messages postés
342
Statut
Membre
-
twiiiix Messages postés 342 Statut Membre -
twiiiix Messages postés 342 Statut Membre -
Bonjour,
Je développe un programme avec Qt et je suis en train de créé le slot "imprimer", j'ai à imprimer dans l'ordre :
- du texte
- un QTableWidget
- du texte
- un QwtPlot
-un QTableWidget
J'ai fait ça :
Pour le moment l'impression marche , mais je ne sais pas comment imprimer le Qwtplot au milieu du reste.
J'avais commencé à faire sa :
Mais je ne sais pas comment ajouter le QPainter à la suite du QTextBrowser qui sera imprimer.
Comment faire ?
Merci d'avance.
Je développe un programme avec Qt et je suis en train de créé le slot "imprimer", j'ai à imprimer dans l'ordre :
- du texte
- un QTableWidget
- du texte
- un QwtPlot
-un QTableWidget
J'ai fait ça :
void fenPrincipale::imprimer()
{
QPrinter * printer = new QPrinter(QPrinter::HighResolution);
printer->setPaperSize (QPrinter::A4);
printer->setOrientation(QPrinter::Portrait);
printer->setFullPage(true);
QPrintDialog printDialog(printer, this);
if ( printDialog.exec() == 1)
{
QTextBrowser *editor = new QTextBrowser;
QTextCharFormat format;
format.setFontPointSize(12);
//On insere les infos
QString modif ="Le texte"
editor->setCurrentCharFormat(format);
editor->setAlignment(Qt::AlignLeft);
//ajout de notre QString a l'endroit du curseur
editor->append(modif);
//on crée un curseur a l'endroit du curseur actuel
QTextCursor cursor = editor->textCursor();
cursor.beginEditBlock();
//Creation du format du tableau qui sera imprimer
QTextTableFormat tableFormat;
tableFormat.setAlignment(Qt::AlignHCenter);
tableFormat.setAlignment(Qt::AlignLeft);
tableFormat.setBackground(QColor("#ffffff"));
tableFormat.setCellPadding(3);
tableFormat.setCellSpacing(3);
//Creation du tableau qui sera imprimé avec le nombre de colonne
//et de ligne que contient le tableau mis en parametre
QTextTable *tableau = cursor.insertTable(vit->rowCount()+1, vit->columnCount(), tableFormat);
QTextFrame *frame = cursor.currentFrame();
QTextFrameFormat frameFormat = frame->frameFormat();
frameFormat.setBorder(0);
frame->setFrameFormat(frameFormat);
//Format des HEADER du tableau
QTextCharFormat format_entete_tableau;
format_entete_tableau.setFontPointSize(9);
format_entete_tableau.setFontWeight(QFont::Bold);
//Format du texte des cellules du tableau
QTextCharFormat format_cellule;
format_cellule.setFontPointSize(9);
//on ecrit les HEADERS du tableaux dans le tableau a imprimer
for (int i = 0 ; i < vit->columnCount() ; i++ )
{
//on selectionne la premiere cellule de chaque colonne
QTextTableCell titre = tableau->cellAt(0,i);
//on place le curseur a cet endroit
QTextCursor cellCursor = titre.firstCursorPosition();
//on écrit dans la cellule
cellCursor.insertText(vit->horizontalHeaderItem(i)->text(),format_entete_tableau);
}
}
for (int y = 0 ; y < vit->rowCount(); y++ )
{
//on selectionne la premiere cellule de chaque ligne
QTextTableCell titre = tableau->cellAt(y+1,0);
//on place le curseur a cet endroit
QTextCursor cellCursor = titre.firstCursorPosition();
//on écrit dans la cellule
cellCursor.insertText(vit->verticalHeaderItem(y)->text(),format_entete_tableau);
}
QTextTableCell cell;
QTextCursor cellCursor;
for (int row = 1; row < tableau->rows(); row ++)
for (int col = 1; col < tableau->columns(); col ++)
{
cell = tableau->cellAt(row,col);
cellCursor = cell.firstCursorPosition();
cellCursor.insertText(tr("%1").arg(vit->item(row-1,col)->text()),format_cellule);
}
//fin de l'edition
cursor.endEditBlock();
//impression de notre editor dans le QPrinter initialisé au début de la fonction
editor->print(printer);
}
:
Pour le moment l'impression marche , mais je ne sais pas comment imprimer le Qwtplot au milieu du reste.
J'avais commencé à faire sa :
QPainter p;
plot->print(&p, QRect(0, 0, 800, 600));
Mais je ne sais pas comment ajouter le QPainter à la suite du QTextBrowser qui sera imprimer.
Comment faire ?
Merci d'avance.
A voir également:
- Imprimer un un qwtplot
- Imprimer un tableau excel - Guide
- Journal de naissance gratuit a imprimer - Télécharger - Histoire & Religion
- Imprimer en a5 - Guide
- Comment signer un pdf sans l'imprimer - Guide
- Parole de chanson francaise gratuite à imprimer - Télécharger - Vie quotidienne
5 réponses
J'ai peut-être une réponse; je dis 'peut-être' car je ne suis pas sûr de celle-ci; n'ayant pas d'imprimante sous la main, je n'ai pu essayer ! Mais depuis le temps que je lis ton 'SOS', j'ai pris le temps d'essayer 'Qwt' et de te livrer ma réflexion.
Je propose de dessiner le 'plot' dans un QTextEdit, et je suppose qu'ensuite un 'textEdit->print(printer)' imprimera son contenu, y compris le plot.
Voici un exemple (je ne mets que le strict nécessaire):
Bonne continuation.
Je propose de dessiner le 'plot' dans un QTextEdit, et je suppose qu'ensuite un 'textEdit->print(printer)' imprimera son contenu, y compris le plot.
Voici un exemple (je ne mets que le strict nécessaire):
QwtPlot plot(QwtText("Quelle est cette fonction ?"));
QwtPlotCurve curve;
QPixmap pixmap(300,200);
pixmap.fill(QColor(Qt::green));
double tabX[13], tabY[13];
for (int i=0; i<13; i++)
tabX[i] = i, tabY[i] = i*i;
curve.setData(tabX, tabY, 13);
curve.attach(&plot);
plot.replot();
plot.print(pixmap);
QTextEdit textEdit;
QTextCursor cursor = textEdit.textCursor();
cursor.beginEditBlock();
cursor.insertHtml(QString("Plot --->"));
cursor.insertImage(pixmap.toImage());
cursor.insertHtml(QString("--- Fin"));
cursor.endEditBlock();
textEdit.print(printer);Ce n'est qu'une idée et il y a sans doute d'autres solutions ;-)
Bonne continuation.
Merci beaucoup pour ta réponse : )
Je suis en train de restructurer tout mon code, je testerais dès que j'ai fini, sinon je ne vois pas pourquoi ça ne marcherais pas ^^.
Je suis en train de restructurer tout mon code, je testerais dès que j'ai fini, sinon je ne vois pas pourquoi ça ne marcherais pas ^^.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question