diff options
author | Jüri Valdmann <juri.valdmann@qt.io> | 2017-04-21 17:39:11 +0200 |
---|---|---|
committer | Jüri Valdmann <juri.valdmann@qt.io> | 2017-06-13 09:35:44 +0000 |
commit | 324ab7bd0cecd462bd19523bc07b6a73b749e014 (patch) | |
tree | 9ba40ca90cd0d829c8fd2c4685eb131288f9f0e5 /examples | |
parent | f03585b7583bd2e7328d462a63ee6ee8938b200c (diff) |
Add Search in page to Simple Browser
Task-number: QTBUG-59824
Change-Id: Id72428996721bd60596becc5b13b29a132f70e69
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
(cherry picked from commit af422d3fc6061ef057bb6f8b58b97af62304e836)
Diffstat (limited to 'examples')
-rw-r--r-- | examples/webenginewidgets/simplebrowser/browserwindow.cpp | 46 | ||||
-rw-r--r-- | examples/webenginewidgets/simplebrowser/browserwindow.h | 3 |
2 files changed, 48 insertions, 1 deletions
diff --git a/examples/webenginewidgets/simplebrowser/browserwindow.cpp b/examples/webenginewidgets/simplebrowser/browserwindow.cpp index 762d56c85..0b85e2bb0 100644 --- a/examples/webenginewidgets/simplebrowser/browserwindow.cpp +++ b/examples/webenginewidgets/simplebrowser/browserwindow.cpp @@ -47,6 +47,7 @@ #include <QCloseEvent> #include <QDesktopWidget> #include <QFileDialog> +#include <QInputDialog> #include <QMenuBar> #include <QMessageBox> #include <QProgressBar> @@ -71,6 +72,7 @@ BrowserWindow::BrowserWindow(QWidget *parent, Qt::WindowFlags flags) QToolBar *toolbar = createToolBar(); addToolBar(toolbar); menuBar()->addMenu(createFileMenu(m_tabWidget)); + menuBar()->addMenu(createEditMenu()); menuBar()->addMenu(createViewMenu(toolbar)); menuBar()->addMenu(createWindowMenu(m_tabWidget)); menuBar()->addMenu(createHelpMenu()); @@ -163,6 +165,32 @@ QMenu *BrowserWindow::createFileMenu(TabWidget *tabWidget) return fileMenu; } +QMenu *BrowserWindow::createEditMenu() +{ + QMenu *editMenu = new QMenu(tr("&Edit")); + QAction *findAction = editMenu->addAction(tr("&Find")); + findAction->setShortcuts(QKeySequence::Find); + connect(findAction, &QAction::triggered, this, &BrowserWindow::handleFindActionTriggered); + + QAction *findNextAction = editMenu->addAction(tr("Find &Next")); + findNextAction->setShortcut(QKeySequence::FindNext); + connect(findNextAction, &QAction::triggered, [this]() { + if (!currentTab() || m_lastSearch.isEmpty()) + return; + currentTab()->findText(m_lastSearch); + }); + + QAction *findPreviousAction = editMenu->addAction(tr("Find &Previous")); + findPreviousAction->setShortcut(QKeySequence::FindPrevious); + connect(findPreviousAction, &QAction::triggered, [this]() { + if (!currentTab() || m_lastSearch.isEmpty()) + return; + currentTab()->findText(m_lastSearch, QWebEnginePage::FindBackward); + }); + + return editMenu; +} + QMenu *BrowserWindow::createViewMenu(QToolBar *toolbar) { QMenu *viewMenu = new QMenu(tr("&View")); @@ -389,6 +417,23 @@ void BrowserWindow::handleFileOpenTriggered() loadPage(file); } +void BrowserWindow::handleFindActionTriggered() +{ + if (!currentTab()) + return; + bool ok = false; + QString search = QInputDialog::getText(this, tr("Find"), + tr("Find:"), QLineEdit::Normal, + m_lastSearch, &ok); + if (ok && !search.isEmpty()) { + m_lastSearch = search; + currentTab()->findText(m_lastSearch, 0, [this](bool found) { + if (!found) + statusBar()->showMessage(tr("\"%1\" not found.").arg(m_lastSearch)); + }); + } +} + void BrowserWindow::closeEvent(QCloseEvent *event) { if (m_tabWidget->count() > 1) { @@ -405,7 +450,6 @@ void BrowserWindow::closeEvent(QCloseEvent *event) deleteLater(); } - void BrowserWindow::loadHomePage() { loadPage(QStringLiteral("http://www.qt.io")); diff --git a/examples/webenginewidgets/simplebrowser/browserwindow.h b/examples/webenginewidgets/simplebrowser/browserwindow.h index c947bed1d..03c8d385b 100644 --- a/examples/webenginewidgets/simplebrowser/browserwindow.h +++ b/examples/webenginewidgets/simplebrowser/browserwindow.h @@ -73,6 +73,7 @@ protected: private slots: void handleNewWindowTriggered(); void handleFileOpenTriggered(); + void handleFindActionTriggered(); void handleShowWindowTriggered(); void handleWebViewLoadProgress(int); void handleWebViewTitleChanged(const QString &title); @@ -82,6 +83,7 @@ private slots: private: QMenu *createFileMenu(TabWidget *tabWidget); + QMenu *createEditMenu(); QMenu *createViewMenu(QToolBar *toolBar); QMenu *createWindowMenu(TabWidget *tabWidget); QMenu *createHelpMenu(); @@ -96,6 +98,7 @@ private: QAction *m_reloadAction; QAction *m_stopReloadAction; UrlLineEdit *m_urlLineEdit; + QString m_lastSearch; }; #endif // BROWSERWINDOW_H |