Development/Tutorials/Printing Print Dialog
< Development | Tutorials
The mission
To display the Print Dialog and print a document.
KDE uses the Qt Printing infrastructure, but adds extra standard features to the Print Dialog, as well as allowing applications to add their own extensions.
The code
<syntaxhighlight lang="cpp-qt" line>
- include <QtGui/QPainter>
- include <QtGui/QPrinter>
- include <KdePrintDialog>
- include <KPrintPreview>
- include <KApplication>
- include <KAboutData>
- include <KCmdLineArgs>
/* This prints Hello World on your printer
- /
int main(int argc, char *argv[]) {
KAboutData aboutData( "test", "test", "1.0", "test", KAboutData::License_GPL, "(c) 2006" ); KCmdLineArgs::init( argc, argv, &aboutData ); KApplication app;
KAction* m_printPreview = KStandardAction::printPreview(app, SLOT(slotFilePrintPreview()), actionCollection());
KHelloWorldPrintDialogWidget optionsWidget;
QPrinter printer; printer.setFullPage(true); QPrintDialog *printDialog = KdePrint::createPrintDialog(&printer, QList<QWidget*>() << &yourOptionsWidget, this); printDialog.setWindowTitle(i18n("Print Hello World")); if (printDialog.exec()) { QPainter painter; painter.begin(&printer); painter.drawText(100,100,"Hello World"); if (optionsWidget.printMoreText()) { } painter.end(); // this makes the print job start }
}
class KHelloWorldPrintDialogWidget : public QWidget {
bool printMoreText(); void setPrintMoreText(bool state);
setWindowTitle(i18n("Your Options Tab Title"));
}
void KHelloWorld::slotFilePrintPreview() {
QPrinter printer; KPrintPreview printPreview(&printer); yourPrintDrawingRoutine(printer); // draws to the QPrinter printPreview.exec();
}
How to compile
CMakeLists.txt
<syntaxhighlight lang="text"> find_package(KDE4 REQUIRED) include_directories( ${KDE4_INCLUDES} ) kde4_add_executable(printhelloworld printtest.cpp) target_link_libraries(printhelloworld ${${KDE4_KDECORE_LIBS} ${KDE4_KUTILS_LIBS} ${QT_QTGUI_LIBRARY})
Make and Run
Then do:
cmake . make ./printhelloworld