diff options
author | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2014-01-15 19:10:22 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-22 08:45:25 +0100 |
commit | 1fcd7970e07a0ecab206224824d1c71488fc19e9 (patch) | |
tree | 7bc6ba73623a69aa303f1f4d5c075e8ef37ca45e /examples | |
parent | 3fcd31f5bd86cb568b1ca4f4f5c7c12c6675dceb (diff) |
Implement QWebEnginePage::toHtml and toPlainText
Those methods are now made asynchronous and need to be given a
callback to handle the result.
Update the code in the browser and fancybrowser examples using
std::bind when using C++11 or tr1::bind with C++03 (which should be
available with compilers on platforms that we support).
Add a (currently failing) earlyToHtml test to make sure that an empty
page doesn't crash because of a possibly incomplete attachment of
the QtRenderViewObserver.
Change-Id: I3ab7cb6f25b91b584dd80df5e4e9ad1e3214348e
Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/widgets/browser/browsermainwindow.cpp | 19 | ||||
-rw-r--r-- | examples/widgets/fancybrowser/mainwindow.cpp | 19 |
2 files changed, 25 insertions, 13 deletions
diff --git a/examples/widgets/browser/browsermainwindow.cpp b/examples/widgets/browser/browsermainwindow.cpp index 9a2262314..ac8426d9a 100644 --- a/examples/widgets/browser/browsermainwindow.cpp +++ b/examples/widgets/browser/browsermainwindow.cpp @@ -71,6 +71,16 @@ #include <QtCore/QDebug> +#if __cplusplus >= 201103L +#include <functional> +using std::bind; +namespace placeholders = std::placeholders; +#else +#include <tr1/functional> +using std::tr1::bind; +namespace placeholders = std::tr1::placeholders; +#endif + BrowserMainWindow::BrowserMainWindow(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, flags) , m_tabWidget(new TabWidget(this)) @@ -372,9 +382,7 @@ void BrowserMainWindow::setupMenu() #endif viewMenu->addSeparator(); -#if defined(QWEBENGINEPAGE_TOHTML) viewMenu->addAction(tr("Page S&ource"), this, SLOT(slotViewPageSource()), tr("Ctrl+Alt+U")); -#endif QAction *a = viewMenu->addAction(tr("&Full Screen"), this, SLOT(slotViewFullScreen(bool)), Qt::Key_F11); a->setCheckable(true); @@ -810,17 +818,16 @@ void BrowserMainWindow::slotViewFullScreen(bool makeFullScreen) void BrowserMainWindow::slotViewPageSource() { -#if defined(QWEBENGINEPAGE_TOHTML) if (!currentTab()) return; - QString markup = currentTab()->page()->toHtml(); - QPlainTextEdit *view = new QPlainTextEdit(markup); + QPlainTextEdit *view = new QPlainTextEdit; view->setWindowTitle(tr("Page Source of %1").arg(currentTab()->title())); view->setMinimumWidth(640); view->setAttribute(Qt::WA_DeleteOnClose); view->show(); -#endif + + currentTab()->page()->toHtml(bind(&QPlainTextEdit::setPlainText, view, placeholders::_1)); } void BrowserMainWindow::slotHome() diff --git a/examples/widgets/fancybrowser/mainwindow.cpp b/examples/widgets/fancybrowser/mainwindow.cpp index 53b2a545d..b9d5a8364 100644 --- a/examples/widgets/fancybrowser/mainwindow.cpp +++ b/examples/widgets/fancybrowser/mainwindow.cpp @@ -42,6 +42,16 @@ #include <QtWebEngineWidgets> #include "mainwindow.h" +#if __cplusplus >= 201103L +#include <functional> +using std::bind; +namespace placeholders = std::placeholders; +#else +#include <tr1/functional> +using std::tr1::bind; +namespace placeholders = std::tr1::placeholders; +#endif + //! [1] MainWindow::MainWindow(const QUrl& url) @@ -75,12 +85,10 @@ MainWindow::MainWindow(const QUrl& url) toolBar->addWidget(locationEdit); //! [1] -#ifdef QWEBENGINEPAGE_TOHTML QMenu *viewMenu = menuBar()->addMenu(tr("&View")); QAction* viewSourceAction = new QAction("Page Source", this); connect(viewSourceAction, SIGNAL(triggered()), SLOT(viewSource())); viewMenu->addAction(viewSourceAction); -#endif //! [3] QMenu *effectMenu = menuBar()->addMenu(tr("&Effect")); @@ -106,16 +114,13 @@ MainWindow::MainWindow(const QUrl& url) void MainWindow::viewSource() { -#ifdef QWEBENGINEPAGE_TOHTML - QWebEnginePage *mainFrame = view->page(); QTextEdit* textEdit = new QTextEdit(NULL); textEdit->setAttribute(Qt::WA_DeleteOnClose); textEdit->adjustSize(); textEdit->move(this->geometry().center() - textEdit->rect().center()); - - textEdit->setPlainText(mainFrame->toHtml()); textEdit->show(); -#endif + + view->page()->toHtml(bind(&QTextEdit::setPlainText, textEdit, placeholders::_1)); } //! [4] |