Download raw (2.6 KB)
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ui->webView->page()->settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true); ui->webView->page()->settings()->setAttribute(QWebSettings::CSSGridLayoutEnabled, true); ui->webView->page()->settings()->setAttribute(QWebSettings::LocalStorageEnabled, true); ui->webView->page()->settings()->setAttribute(QWebSettings::AcceleratedCompositingEnabled, true); QObject::connect( ui->loadButton, SIGNAL(clicked()), this, SLOT( on_load() ) ); QObject::connect( ui->urlEdit, SIGNAL(returnPressed()), this, SLOT( on_load() ) ); QShortcut *printShortcut = new QShortcut(QKeySequence("Ctrl+P"), this ); QObject::connect( printShortcut, SIGNAL(activated()), this, SLOT( on_print() ) ); QObject::connect( ui->printButton, SIGNAL(clicked()), this, SLOT( on_print() ) ); QShortcut *reloadShortcut = new QShortcut(QKeySequence("Ctrl+R"), this ); QObject::connect( reloadShortcut, SIGNAL(activated()), this, SLOT( on_reload() ) ); QObject::connect( ui->reloadButton, SIGNAL(clicked()), this, SLOT( on_reload() ) ); QObject::connect( ui->webView->page(), SIGNAL(printRequested(QWebFrame *)), this, SLOT(on_print())); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_load() { ui->webView->load((ui->urlEdit->text())); } void MainWindow::on_reload() { ui->webView->reload(); } void MainWindow::on_print_preview(QPrinter *printer) { ui->webView->print( printer ); } void MainWindow::on_print() { QPrinter printer; QSizeF papersize( 578, 747 ); printer.setOutputFormat( QPrinter::PdfFormat ); printer.setPrintRange( QPrinter::AllPages ); printer.setResolution( 300 ); printer.setPageMargins( 0,0,0,0, QPrinter::Point ); printer.setPaperSize( papersize, QPrinter::Point ); printer.setFullPage( true ); printer.setFontEmbeddingEnabled( true ); // printer.setOutputFileName( filename ); // QPrintDialog *dialog = new QPrintDialog(&printer); // if ( dialog->exec() == QDialog::Accepted) // ui->webView->print( &printer ); // QPrintDialog printDlg(&printer); // if (printDlg.exec() == QDialog::Rejected) // return; // ui->webView->print( &printer ); QPrintPreviewDialog preview(&printer); preview.adjustSize(); preview.setMinimumSize(800, 600); preview.setWindowTitle("Test imp"); connect(&preview, SIGNAL(paintRequested(QPrinter*)), this, SLOT(on_print_preview(QPrinter*))); preview.exec(); }