Seite 1 von 1

Drucken mit Qt QPrinter QPainter

Verfasst: 25. Februar 2014 08:49
von nickvan86
Hallo Forum,

ich durchsuche mittlerweile seit 2 Tagen das internet auf der suche wie man es schafft in Qt etwas zu drucken.
Ich habe mir im Internet folgendes Beispiel mal angeschaut und dies dann auch probiert:

Code: Alles auswählen

// Drucker erstellen
    QPrinter *meinPrinter = new QPrinter();

    // Druckerdialog
    QPrintDialog *WelcherDruckerDialog = new QPrintDialog(meinPrinter, this);
    WelcherDruckerDialog->setWindowTitle(tr("Mit welchem Drucker soll ich drucken"));

    // Abbruchbehandlung
    if (WelcherDruckerDialog->exec() != QDialog::Accepted)return;

    // Neue Seite einfügen
    meinPrinter->newPage();

    //Der entscheidenede Punkt: Hole aus deinem QTextEdit ein echtes QTextDocument raus und nicht irgendeinen Listen-Murks
    QTextDocument* text_doc1 = ui->textEdit1->document();

    //Drucke dein QTextDocument
    text_doc1->print(meinPrinter);
Soweit so gut. Dieses Beispiel funktioniert auch ohne Probleme. Nun möchte ich das ganze auch irgendwie anwenden können. Nur leider da tu ich mir verdammt schwer.
Ich habe ein QDialog mit 4-6 LineEdit (Vorname, Nachname,...) und 2-3 textEdit. Nun möchte ich das sauber auf einer seite ausdrucken. nur weis ich nicht genau wie und wo ich am besten anfagen.
Hab gelesen das man den Text quasi "zeichnen" muss.
Hat einer von euch das schonmal so ungefähr gemacht?

Gruß

Alex

Re: Drucken mit Qt QPrinter QPainter

Verfasst: 25. Februar 2014 09:30
von archer
Ich drucke fast immer über ein QTextDocument.
Dort setze ich meine Texte aus den verschiedenen Objekten hinein und drucke es dann.

Re: Drucken mit Qt QPrinter QPainter

Verfasst: 25. Februar 2014 10:21
von nickvan86
Hi,

danke für den Tip. Ich werde es mal versuchen und vielleicht nochmal nachfragen falls ich nicht zurecht kommen sollte.
Hoffe das ist okay?

Gruß und Danke
Alex

Re: Drucken mit Qt QPrinter QPainter

Verfasst: 25. Februar 2014 10:41
von nickvan86
Habe mir nun folgenden Code mal angeschaut und nachgebaut:

Code: Alles auswählen

 QPainter painter(this);

    painter.drawText(100,120,"Hello World");

    QRect rec(100,120,250,25);
    painter.drawRect(rec);
    painter.drawText(rec,Qt::AlignLeft,"Left");
    painter.drawText(rec,Qt::AlignCenter,"Center");
    painter.drawText(rec,Qt::AlignRight | Qt::AlignVCenter,"Right");

    QRect rec2(100,150,25,25);
    painter.drawRect(rec2);
    painter.drawText(rec2,"This will be clipped");

    QTextDocument doc;
    QRect rec3(0,0,250,250);
    painter.translate(20,20);
    doc.setTextWidth(rec3.width());
    doc.setHtml("<b><u>Hello</u></b>");

    doc.drawContents(&painter,rec3);
anstatt "drawContents" sagst du druck mir doc?
Habe ich das so richtig verstanden? Die Bemaßung ist in Pixel vom Jeweiligen Fenster? Hast du dann ein Fenster das du dann in A4 ausdruckst?

Gruß

Re: Drucken mit Qt QPrinter QPainter

Verfasst: 25. Februar 2014 11:10
von archer
Ich erzeuge mir ein QTextDocument, das ich mit meinen Texten aus der Oberfläche fülle.
Das mache ich über QTextCursor. Dann nehme ich einen QPainter, der das Dokument auf den
Drucker zeichnet. Dazu nehme ich das drawContents(), so wie du.
Ich hatte mich damals an folgendem orientiert:
http://qt-apps.org/content/show.php/Tex ... tent=62383

Re: Drucken mit Qt QPrinter QPainter

Verfasst: 25. Februar 2014 11:13
von nickvan86
Okay muss ich mal probieren. Aber das an was du dich da orentiert hast habe ich gerade herunter geladen :lol:
aber drucken an sich ist doch nicht ganz leicht :-(

Re: Drucken mit Qt QPrinter QPainter

Verfasst: 25. Februar 2014 11:38
von nickvan86
Also ich komme damit gar nicht zurecht :-( naja dann wohl nicht :shock: