Development/Tutorials/Printing Print Dialog: Difference between revisions
< Development | Tutorials
No edit summary |
No edit summary |
||
Line 12: | Line 12: | ||
#include <QtGui/QPrinter> | #include <QtGui/QPrinter> | ||
#include < | #include <QPrintDialog> | ||
#include <KPrintPreview> | #include <KPrintPreview> | ||
Line 74: | Line 74: | ||
find_package(KDE4 REQUIRED) | find_package(KDE4 REQUIRED) | ||
include_directories( ${KDE4_INCLUDES} ) | include_directories( ${KDE4_INCLUDES} ) | ||
kde4_add_executable(printhelloworld | kde4_add_executable(printhelloworld main.cpp) | ||
target_link_libraries(printhelloworld ${KDE4_KDECORE_LIBS} ${KDE4_KUTILS_LIBS} ${QT_QTGUI_LIBRARY}) | target_link_libraries(printhelloworld ${KDE4_KDECORE_LIBS} ${KDE4_KUTILS_LIBS} ${QT_QTGUI_LIBRARY}) | ||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 19:04, 25 September 2011
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 files
main.cpp
#include <QtGui/QPainter>
#include <QtGui/QPrinter>
#include <QPrintDialog>
#include <KPrintPreview>
#include <KApplication>
#include <KAboutData>
#include <KAction>
#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();
}
CMakeLists.txt
find_package(KDE4 REQUIRED)
include_directories( ${KDE4_INCLUDES} )
kde4_add_executable(printhelloworld main.cpp)
target_link_libraries(printhelloworld ${KDE4_KDECORE_LIBS} ${KDE4_KUTILS_LIBS} ${QT_QTGUI_LIBRARY})
Make and Run
Then do:
cmake . make ./printhelloworld