summaryrefslogtreecommitdiffstats
path: root/src/gui/doc/snippets/textdocument-printing/mainwindow.cpp
blob: ff16d6f0dac06ff0c11637efab47ec5d2cf4c576 (plain)
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
// Copyright (C) 2016 The Qt Company Ltd.// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause#include"mainwindow.h"#include <QMenu>#include <QMenuBar>#include <QTextEdit>#include <QFileDialog>#include <QPrinter>#include <QPrintDialog>MainWindow::MainWindow(){ QMenu *fileMenu =newQMenu(tr("&File")); fileMenu->addAction(tr("&Open..."),QKeySequence(tr("Ctrl+O","File|Open"))this,SLOT(openFile())); printAction = fileMenu->addAction(tr("&Print..."),this,SLOT(printFile())); printAction->setEnabled(false); pdfPrintAction = fileMenu->addAction(tr("Print as P&DF..."),this,SLOT(printPdf())); pdfPrintAction->setEnabled(false); fileMenu->addAction(tr("E&xit"),QKeySequence(tr("Ctrl+Q","File|Exit")),this,SLOT(close()));menuBar()->addMenu(fileMenu); editor =newQTextEdit(this); document =newQTextDocument(this); editor->setDocument(document);connect(editor, &QTextEdit::selectionChanged,this, &MainWindow::updateMenus);setCentralWidget(editor);setWindowTitle(tr("Text Document Writer"));}voidMainWindow::openFile(){ QString fileName =QFileDialog::getOpenFileName(this,tr("Open file"), currentFile,"HTML files (*.html);;Text files (*.txt)");if(!fileName.isEmpty()) { QFileInfo info(fileName);if(info.completeSuffix() =="html") { QFile file(fileName);if(file.open(QIODevice::ReadOnly)) { editor->setHtml(file.readAll()); file.close(); currentFile = fileName;}}else if(info.completeSuffix() =="txt") { QFile file(fileName);if(file.open(QIODevice::ReadOnly)) { editor->setPlainText(file.readAll()); file.close(); currentFile = fileName;}} printAction->setEnabled(true); pdfPrintAction->setEnabled(true);}}voidMainWindow::printFile(){//! [0] QTextDocument *document = editor->document(); QPrinter printer; QPrintDialog *dlg =newQPrintDialog(&printer,this);if(dlg->exec() !=QDialog::Accepted)return; document->print(&printer);//! [0]}voidMainWindow::printPdf(){ QPrinter printer(QPrinter::HighResolution); printer.setOutputFormat(QPrinter::PdfFormat); QPrintDialog *printDialog =newQPrintDialog(&printer,this);if(printDialog->exec() ==QDialog::Accepted) editor->document()->print(&printer);}
close