#include "webview.h" #include #include #include #include WebView::WebView(QWidget *parent, QStringList dictionaries) : QWebEngineView(parent) { m_dictionaries = dictionaries; } void WebView::contextMenuEvent(QContextMenuEvent *event) { const QWebEngineContextMenuData &data = page()->contextMenuData(); Q_ASSERT(data.isValid()); if (!data.isContentEditable()) { QWebEngineView::contextMenuEvent(event); return; } QWebEngineProfile *profile = page()->profile(); const QStringList &languages = profile->spellCheckLanguages(); QMenu *menu = page()->createStandardContextMenu(); menu->addSeparator(); QAction *spellcheckAction = new QAction(tr("Check Spelling"), nullptr); spellcheckAction->setCheckable(true); spellcheckAction->setChecked(profile->isSpellCheckEnabled()); connect(spellcheckAction, &QAction::toggled, this, [profile](bool toogled) { profile->setSpellCheckEnabled(toogled); }); menu->addAction(spellcheckAction); if (profile->isSpellCheckEnabled()) { QMenu *subMenu = menu->addMenu(tr("Select Language")); for (const QString &dict : m_dictionaries) { QAction *action = subMenu->addAction(dict); action->setCheckable(true); action->setChecked(languages.contains(dict)); connect(action, &QAction::triggered, this, [profile, dict,this](){ profile->setSpellCheckLanguages(QStringList()<popup(event->globalPos()); }