| Autor |
Nachricht |
baba is awesome
Mitglied
Benutzerprofil
Anmeldungsdatum: 08.02.2010
Beiträge: 14
|
baba is awesome Mitglied
10:30:56 09.02.2010 Titel: |
Printer function |
Zitieren |
Hallo,
Ich bin im Praktikum und soll jetzt ein Programm schreiben. Dieses schiest einen Screenshot und speichert ihn. (Soweit bin ich).
Nun soll ich das auch noch ausdrucken, hier wird es für mich Knifflig da ich nicht soviel rumprobieren möchte da es ebend ein Fremder Drucker ist.
Ich habe mich auch schon via Google erkundingt und verstehe den sinn von:
printer->newPasge, printer->begin...
Jedoch habe ich nirgends etwas gefunden wo ich statt Text ein Bild Drucken kann. Kann mir wer weiter helfen?
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | void ApplicationWindow::print()
{
const int Margin = 10;
int pageNo = 1;
if ( printer->setup(this) ) { // printer dialog
statusBar()->message( "Printing..." );
QPainter p;
if( !p.begin( printer ) ) // paint on printer
return;
p.setFont( e->font() );
int yPos = 0; // y-position for each line
QFontMetrics fm = p.fontMetrics();
QPaintDeviceMetrics metrics( printer ); // need width/height
// of printer surface
for( int i = 0 ; i < e->lines() ; i++ ) {
if ( Margin + yPos > metrics.height() - Margin ) {
QString msg( "Printing (page " );
msg += QString::number( ++pageNo );
msg += ")...";
statusBar()->message( msg );
printer->newPage(); // no more room on this page
yPos = 0; // back to top of page
}
p.drawText( Margin, Margin + yPos,
metrics.width(), fm.lineSpacing(),
ExpandTabs | DontClip,
e->text( i ) );
yPos = yPos + fm.lineSpacing();
}
p.end(); // send job to printer
statusBar()->message( "Printing completed", 2000 );
} else {
statusBar()->message( "Printing aborted", 2000 );
}
} | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | void ApplicationWindow::print()
{
const int Margin = 10;
int pageNo = 1;
if ( printer->setup(this) ) { // printer dialog
statusBar()->message( "Printing..." );
QPainter p;
if( !p.begin( printer ) ) // paint on printer
return;
p.setFont( e->font() );
int yPos = 0; // y-position for each line
QFontMetrics fm = p.fontMetrics();
QPaintDeviceMetrics metrics( printer ); // need width/height
// of printer surface
for( int i = 0 ; i < e->lines() ; i++ ) {
if ( Margin + yPos > metrics.height() - Margin ) {
QString msg( "Printing (page " );
msg += QString::number( ++pageNo );
msg += ")...";
statusBar()->message( msg );
printer->newPage(); // no more room on this page
yPos = 0; // back to top of page
}
p.drawText( Margin, Margin + yPos,
metrics.width(), fm.lineSpacing(),
ExpandTabs | DontClip,
e->text( i ) );
yPos = yPos + fm.lineSpacing();
}
p.end(); // send job to printer
statusBar()->message( "Printing completed", 2000 );
} else {
statusBar()->message( "Printing aborted", 2000 );
}
} | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | void ApplicationWindow::print()
{
const int Margin = 10;
int pageNo = 1;
if ( printer->setup(this) ) { // printer dialog
statusBar()->message( "Printing..." );
QPainter p;
if( !p.begin( printer ) ) // paint on printer
return;
p.setFont( e->font() );
int yPos = 0; // y-position for each line
QFontMetrics fm = p.fontMetrics();
QPaintDeviceMetrics metrics( printer ); // need width/height
// of printer surface
for( int i = 0 ; i < e->lines() ; i++ ) {
if ( Margin + yPos > metrics.height() - Margin ) {
QString msg( "Printing (page " );
msg += QString::number( ++pageNo );
msg += ")...";
statusBar()->message( msg );
printer->newPage(); // no more room on this page
yPos = 0; // back to top of page
}
p.drawText( Margin, Margin + yPos,
metrics.width(), fm.lineSpacing(),
ExpandTabs | DontClip,
e->text( i ) );
yPos = yPos + fm.lineSpacing();
}
p.end(); // send job to printer
statusBar()->message( "Printing completed", 2000 );
} else {
statusBar()->message( "Printing aborted", 2000 );
}
} | |
Mfg Marvin |
_________________ Sup means Ownd !
|
|
 |
baba is awesome
Mitglied
Benutzerprofil
Anmeldungsdatum: 08.02.2010
Beiträge: 14
|
baba is awesome Mitglied
12:18:08 09.02.2010 Titel: |
|
Zitieren |
Hat denn keiner ne Ahnung ich wie ich ein Bild drucken kann? Wenn ihr irgendwo zu noch Fragen habt könnt ihr auch die Äusern. |
_________________ Sup means Ownd !
|
|
 |
baba is awesome
Mitglied
Benutzerprofil
Anmeldungsdatum: 08.02.2010
Beiträge: 14
|
baba is awesome Mitglied
13:42:03 09.02.2010 Titel: |
|
Zitieren |
bump (Bring up my Post)
Ich habe das Problem das er printer ncihht mal erkennt. Weiß jemand warum nicht?
Mfg Marvin
PS: Lasse das jetzt über einen PDF Drucker laufen. |
_________________ Sup means Ownd !
|
|
 |
Athar
Mitglied
Benutzerprofil
Anmeldungsdatum: 24.12.2009
Beiträge: 838
|
Athar Mitglied
13:46:23 09.02.2010 Titel: |
|
Zitieren |
Die ganzen Qs im Code lassen auf Qt schließen, näheres dürftest du also dort in der Dokumentation finden. |
|
|
|
 |
baba is awesome
Mitglied
Benutzerprofil
Anmeldungsdatum: 08.02.2010
Beiträge: 14
|
baba is awesome Mitglied
13:48:06 09.02.2010 Titel: |
|
Zitieren |
Wie wo was? Ich kapier den Satz nicht ? |
_________________ Sup means Ownd !
|
|
 |
nman
Moderator
Benutzerprofil
Anmeldungsdatum: 19.02.2002
Beiträge: 12945
|
nman Moderator
13:50:25 09.02.2010 Titel: |
|
Zitieren |
Brems Dich gefälligst mal ein.
Nix für ungut, aber wenn Dir binnen drei Stunden noch niemand geantwortet hat, ist das noch lange kein Grund, gleich zweimal zu bumpen, insbeondere, wenn der Thread ohnehin an erster Stelle im Forum steht.
Athar meinte, dass Du QT zu verwenden scheinst, lies da mal in der Doku nach, da könnte es durchaus entsprechende Funktionen geben. |
_________________ …but tuesday's just as bad.
|
|
 |
baba is awesome
Mitglied
Benutzerprofil
Anmeldungsdatum: 08.02.2010
Beiträge: 14
|
baba is awesome Mitglied
13:52:52 09.02.2010 Titel: |
|
Zitieren |
Ja ebend weil er so weit oben ist ist es ja egal wenn ich Bumpe Also imo von mir aus lass ich es in Zukunft :P
Ich lese in den 3 Stunden ja nix anderes als Dokus ich finnde das Thema nur sehr Kompliziert und besonders in Richtung Image gibt es keine Erläuterungen. Und zu guter letzt ist das nicht mal mein Drucker an dem ich dass Testen soll was mir noch die meisten Sorgen bereitet
Kannst du ncoh was zu dem Quellcode sagen? |
_________________ Sup means Ownd !
|
|
 |
nman
Moderator
Benutzerprofil
Anmeldungsdatum: 19.02.2002
Beiträge: 12945
|
nman Moderator
14:04:25 09.02.2010 Titel: |
|
Zitieren |
| baba is awesome schrieb: | Ja ebend weil er so weit oben ist ist es ja egal wenn ich Bumpe Also imo von mir aus lass ich es in Zukunft :P |
Tu das. Anderen Leuten auf die Nerven zu gehen, ist kein guter Weg, um Antworten zu bekommen, nur ein guter Weg, um ignoriert und/oder angepöbelt zu werden.
| Zitat: | | Kannst du ncoh was zu dem Quellcode sagen? |
Nein, da mich GUI-Programmierung überhaupt nicht interessiert und ich daher auch keine Ahnung davon habe. Ich verschiebe Dich mal ins entsprechende Subforum.
Eine genauere Beschreibung davon, was Du gemacht hast und was dabei der Fehler war, täte übrigens nicht weh. |
_________________ …but tuesday's just as bad.
|
|
 |
C++ Forumbot
Forumbot
Benutzerprofil
Anmeldungsdatum: 29.02.2004
Beiträge: 16158
|
C++ Forumbot Forumbot
14:04:43 09.02.2010 Titel: |
|
Zitieren |
|
 |
Athar
Mitglied
Benutzerprofil
Anmeldungsdatum: 24.12.2009
Beiträge: 838
|
Athar Mitglied
14:07:59 09.02.2010 Titel: |
|
Zitieren |
Ich weiß nicht wirklich, wo das Problem ist.
Wird hier alles erklärt, erster Googletreffer zu "qt printing":
http://doc.trolltech.com/4.2/printing.html
QPainter bietet alle möglichen Funktionen, um irgendetwas zusammenzuzeichnen, darunter drawImage... ein weiterer Klick auf QImage offenbart, dass die Klasse interessante Funktionen wie load hat und sogar einen Konstruktor, der einen Dateinamen erwartet... was der wohl macht? |
|
|
|
 |
baba is awesome
Mitglied
Benutzerprofil
Anmeldungsdatum: 08.02.2010
Beiträge: 14
|
baba is awesome Mitglied
14:10:44 09.02.2010 Titel: |
|
Zitieren |
Athar ich liebe Provokante menschen
Auf der Seite war ich auch als ersten aber das "verdammte" draw.Image muss ich übersehenhaben. Ich versuche damit noch einmal Danke .
Und auch wenn es nman wohl ncihtmehr liest lass ich die bumps;) |
_________________ Sup means Ownd !
|
|
 |
baba is awesome
Mitglied
Benutzerprofil
Anmeldungsdatum: 08.02.2010
Beiträge: 14
|
baba is awesome Mitglied
15:18:53 09.02.2010 Titel: |
|
Zitieren |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | QPrinter printer(QPrinter::HighResolution);
QPrintDialog *dialog = new QPrintDialog(&printer, this);
dialog->setWindowTitle(tr("Print Document"));
if (dialog->exec() != QDialog::Accepted)
return;
QPainter painter;
painter.begin(&printer);
int lastPage=1,numberOfPages=1;
for (int page = 1; page < numberOfPages; ++page) {
QRectF target(10.0, 20.0, 80.0, 60.0);
QRectF source(0.0, 0.0, 70.0, 40.0);
QImage image(lastfilename);
painter.drawImage(target, image, source);
if (page != lastPage)
printer.newPage();
}
painter.end(); | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | QPrinter printer(QPrinter::HighResolution);
QPrintDialog *dialog = new QPrintDialog(&printer, this);
dialog->setWindowTitle(tr("Print Document"));
if (dialog->exec() != QDialog::Accepted)
return;
QPainter painter;
painter.begin(&printer);
int lastPage=1,numberOfPages=1;
for (int page = 1; page < numberOfPages; ++page) {
QRectF target(10.0, 20.0, 80.0, 60.0);
QRectF source(0.0, 0.0, 70.0, 40.0);
QImage image(lastfilename);
painter.drawImage(target, image, source);
if (page != lastPage)
printer.newPage();
}
painter.end(); | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | QPrinter printer(QPrinter::HighResolution);
QPrintDialog *dialog = new QPrintDialog(&printer, this);
dialog->setWindowTitle(tr("Print Document"));
if (dialog->exec() != QDialog::Accepted)
return;
QPainter painter;
painter.begin(&printer);
int lastPage=1,numberOfPages=1;
for (int page = 1; page < numberOfPages; ++page) {
QRectF target(10.0, 20.0, 80.0, 60.0);
QRectF source(0.0, 0.0, 70.0, 40.0);
QImage image(lastfilename);
painter.drawImage(target, image, source);
if (page != lastPage)
printer.newPage();
}
painter.end(); | |
Okay das ist nun meine Funktion die es schafft ein PDF zu erstellen allerdings füllt sie es nicht Kann mir hier nocheinmal jemand unter die Arme greifen ? |
_________________ Sup means Ownd !
|
|
 |
l'abra d'or
Mitglied
Benutzerprofil
Anmeldungsdatum: 26.12.2009
Beiträge: 1201
|
l'abra d'or Mitglied
15:34:28 09.02.2010 Titel: |
|
Zitieren |
| C/C++ Code: | int lastPage=1, numberOfPages=1;
for (int page = 1; page < numberOfPages; ++page) { | |
| C/C++ Code: | int lastPage=1, numberOfPages=1;
for (int page = 1; page < numberOfPages; ++page) { | |
| C/C++ Code: | int lastPage=1, numberOfPages=1;
for (int page = 1; page < numberOfPages; ++page) { | |
Na, was glaubst du passiert da? Richtig, gar nix...
Du hast 3 Variablen, schau dir das mal GENAU an, sollte klar sein wo der Fehler ist. |
|
|
|
 |
baba is awesome
Mitglied
Benutzerprofil
Anmeldungsdatum: 08.02.2010
Beiträge: 14
|
baba is awesome Mitglied
15:39:33 09.02.2010 Titel: |
|
Zitieren |
Eig dürfte der Fehler an dem Punkt nicht liegen weil es genau macht was ich möchte
Und ja ich habe es extra nochmal überprüft. Er läuft genau einmal durch. Habe schon überlegt for zu löschen weil mir die Statischen Werte reichen. Da ich nur eine einzelnde Bilddatei drucken mag.
Mfg Baba |
_________________ Sup means Ownd !
|
|
 |
Tyrdal
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.09.2007
Beiträge: 456
|
Tyrdal Mitglied
15:42:07 09.02.2010 Titel: |
|
Zitieren |
Das kann gar nicht laufen, da 1 nicht kleiner als 1 ist. |
|
|
|
 |
baba is awesome
Mitglied
Benutzerprofil
Anmeldungsdatum: 08.02.2010
Beiträge: 14
|
baba is awesome Mitglied
15:44:49 09.02.2010 Titel: |
|
Zitieren |
Habe ich mir auch gedacht. Aber es läuft nunmal. Und mit page=0 läuft es doppelt von daher... |
_________________ Sup means Ownd !
|
|
 |
nman
Moderator
Benutzerprofil
Anmeldungsdatum: 19.02.2002
Beiträge: 12945
|
nman Moderator
15:48:21 09.02.2010 Titel: |
|
Zitieren |
Du musst irgendwo Mist gebaut haben. Diese for-Schleife kann so nicht funktionieren. 1 ist einfach nicht kleiner als 1. Falls Du per Debugger da durch gehst, verstehst Du wohl nicht richtig, was der macht.
Lass Dir mal innerhalb der Schleife irgendwas ausgeben, dann siehst Du, dass da nicht durchgegangen wird. |
_________________ …but tuesday's just as bad.
|
|
 |
baba is awesome
Mitglied
Benutzerprofil
Anmeldungsdatum: 08.02.2010
Beiträge: 14
|
baba is awesome Mitglied
16:35:44 09.02.2010 Titel: |
|
Zitieren |
Mhh wir haben den Fehler. Dieser wird behoben und dann meld ich mich noch einmal |
_________________ Sup means Ownd !
|
|
 |
baba is awesome
Mitglied
Benutzerprofil
Anmeldungsdatum: 08.02.2010
Beiträge: 14
|
baba is awesome Mitglied
10:14:16 10.02.2010 Titel: |
|
Zitieren |
Okay neuer Lagebericht =)
Wir haben das problem jetzt eliminiert und ich den Code vereinfacht. Allerdings fehlt mir ein entscheidener Punkt und zwar muss ich wohl die stelle übersehen haben an der ich den Befehl zum Drucker übergebe. Aber als ich in anderen Funktionen, die funktionieren sollten, ist mir aufgefallen das mir nix auffällt -.-
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | QPrinter printer(QPrinter::HighResolution); //Initialisierung des Printers
QPrintDialog *dialog = new QPrintDialog(&printer, this); //Aufruf des Printdialogs zum setzen einiger Informationen
dialog->setWindowTitle(tr("Print Document"));//Namensänderung eig useless :)
if (dialog->exec() != QDialog::Accepted) //Abbruch Button
return; //Abbruch Bedingung in dem fall Beendigung der Funktion
QPainter painter; // Der "Zeichner" der das Bild für den Drucker malt
painter.begin(&printer); //Anfang
QRectF target(10.0, 20.0, 80.0, 60.0);
QRectF source(0.0, 0.0, 70.0, 40.0);
QImage image(lastfilename);
painter.drawImage(target, image, source); //Setzen der größe der Seite des Bildes und die Information der Bilddatei
painter.end(); //ende
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | QPrinter printer(QPrinter::HighResolution); //Initialisierung des Printers
QPrintDialog *dialog = new QPrintDialog(&printer, this); //Aufruf des Printdialogs zum setzen einiger Informationen
dialog->setWindowTitle(tr("Print Document"));//Namensänderung eig useless :)
if (dialog->exec() != QDialog::Accepted) //Abbruch Button
return; //Abbruch Bedingung in dem fall Beendigung der Funktion
QPainter painter; // Der "Zeichner" der das Bild für den Drucker malt
painter.begin(&printer); //Anfang
QRectF target(10.0, 20.0, 80.0, 60.0);
QRectF source(0.0, 0.0, 70.0, 40.0);
QImage image(lastfilename);
painter.drawImage(target, image, source); //Setzen der größe der Seite des Bildes und die Information der Bilddatei
painter.end(); //ende
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | QPrinter printer(QPrinter::HighResolution); //Initialisierung des Printers
QPrintDialog *dialog = new QPrintDialog(&printer, this); //Aufruf des Printdialogs zum setzen einiger Informationen
dialog->setWindowTitle(tr("Print Document"));//Namensänderung eig useless :)
if (dialog->exec() != QDialog::Accepted) //Abbruch Button
return; //Abbruch Bedingung in dem fall Beendigung der Funktion
QPainter painter; // Der "Zeichner" der das Bild für den Drucker malt
painter.begin(&printer); //Anfang
QRectF target(10.0, 20.0, 80.0, 60.0);
QRectF source(0.0, 0.0, 70.0, 40.0);
QImage image(lastfilename);
painter.drawImage(target, image, source); //Setzen der größe der Seite des Bildes und die Information der Bilddatei
painter.end(); //ende
| |
So habe jetzt auch einmal Comments angefügt um zu zeigen das ich mich damit auseinander gesetzt habe. Trotzdem kommeich nicht weiter.
Nun gut ich hoffe auf Antwort und google solange weiter.
Mfg marvin#
/edit
Hier habe ich noch etwas gefunden
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 1.
QTextDocument* document = textEdit->document();
2.
QPrinter printer;
3.
4.
QPrintDialog* dialog = new QPrintDialog(&printer, this);
5.
if (dialog->exec() == QDialog::Accepted)
6.
{
7.
document->print(&printer);
8.
}
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 1.
QTextDocument* document = textEdit->document();
2.
QPrinter printer;
3.
4.
QPrintDialog* dialog = new QPrintDialog(&printer, this);
5.
if (dialog->exec() == QDialog::Accepted)
6.
{
7.
document->print(&printer);
8.
}
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 1.
QTextDocument* document = textEdit->document();
2.
QPrinter printer;
3.
4.
QPrintDialog* dialog = new QPrintDialog(&printer, this);
5.
if (dialog->exec() == QDialog::Accepted)
6.
{
7.
document->print(&printer);
8.
}
| |
wäre diese funktion nicht sogar besser für mein Problem? Wenn ja kann ich die denn auch auf ein Bild umlenken?
/Edit2 Okay es muss an painter->draw,Imager liegen. Sind vielleicht die angegebenen Maße nicht okay? Kann mich mit denen irngedwie nicht richtig auseinander setzen...
/edit 3 mhh er findet den Drucker nicht... Meint ihr das liegt eher an den Treibern oder Quelltex, weil eig kann ich hierüber Drucken...
/edit 4 Fehlermeldung:
| Code: | | lp: The printer or class was not found. | |
| Code: | | lp: The printer or class was not found. | |
| Code: | | lp: The printer or class was not found. | |
|
_________________ Sup means Ownd !
Zuletzt bearbeitet von baba is awesome am 12:27:29 10.02.2010, insgesamt 4-mal bearbeitet |
|
 |
baba is awesome
Mitglied
Benutzerprofil
Anmeldungsdatum: 08.02.2010
Beiträge: 14
|
baba is awesome Mitglied
13:49:47 10.02.2010 Titel: |
|
Zitieren |
Okay auf anderen Rechnern läuft es. Damit ist das hier geschlossen. |
_________________ Sup means Ownd !
|
|
 |