435
社区成员
发帖
与我相关
我的任务
分享
QAction* myWebEngineView::setMenuItem(QAction* act, QString strItemText, QString strIconName)
{
if (act)
{
act->setText(strItemText);
if (strIconName.isEmpty( ) == false)
{
act->setIcon(QPixmap(strIconName));
}
}
return act;
}
//----------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------
myWebEngineView::myWebEngineView(QWidget* parent)
: QWebEngineView (parent)
{
QTimer::singleShot(10, [this]
{
initMenuItems( );
});
}
//----------------------------------------------------------------------------------------------------
myWebEngineView* myWebEngineView::createWindow (QWebEnginePage::WebWindowType type)
{
dout( QString("createWindow: %1").arg(type));
if (type == QWebEnginePage::WebBrowserTab)
{
myWebEngineView* new_page = new myWebEngineView(this->page( )->profile( ), this);
this->setPage(new_page);
this->page( )->setWebChannel(&m_WebControlChannel);
initMenuItems( ); //<<-----注意这里也要设置一次
}
return this;
}
//----------------------------------------------------------------------------------------------------
void myWebEngineView::initMenuItems( )
{
setMenuItem(page( )->action(QWebEnginePage::Back), xTr("Back"), ":/App/images/menu/back.png");
setMenuItem(page( )->action(QWebEnginePage::Forward), xTr("Forward"), ":/App/images/menu/forward.png");
setMenuItem(page( )->action(QWebEnginePage::Stop), xTr("Stop"));
setMenuItem(page( )->action(QWebEnginePage::Reload), xTr("Reload"), ":/App/images/menu/reload.png");
setMenuItem(page( )->action(QWebEnginePage::Cut), xTr("Cut"), ":/App/images/menu/cut.png");
setMenuItem(page( )->action(QWebEnginePage::Copy), xTr("Copy"), ":/App/images/menu/copy.png");
setMenuItem(page( )->action(QWebEnginePage::Paste), xTr("Paste"), ":/App/images/menu/paste.png");
setMenuItem(page( )->action(QWebEnginePage::Undo), xTr("Undo"), ":/App/images/menu/undo.png");
setMenuItem(page( )->action(QWebEnginePage::Redo), xTr("Redo"), ":/App/images/menu/redo.png");
setMenuItem(page( )->action(QWebEnginePage::SelectAll), xTr("SelectAll") );
setMenuItem(page( )->action(QWebEnginePage::ReloadAndBypassCache), xTr("ReloadAndBypassCache") );
setMenuItem(page( )->action(QWebEnginePage::PasteAndMatchStyle), xTr("PasteAndMatchStyle") );
setMenuItem(page( )->action(QWebEnginePage::OpenLinkInThisWindow), xTr("OpenLinkInThisWindow") ); page( )->action(QWebEnginePage::OpenLinkInThisWindow)->setVisible(false);
setMenuItem(page( )->action(QWebEnginePage::OpenLinkInNewWindow), xTr("OpenLinkInNewWindow") ); page( )->action(QWebEnginePage::OpenLinkInNewWindow)->setVisible(false);
setMenuItem(page( )->action(QWebEnginePage::OpenLinkInNewTab), xTr("OpenLinkInNewTab") ); page( )->action(QWebEnginePage::OpenLinkInNewTab)->setVisible(false);
setMenuItem(page( )->action(QWebEnginePage::CopyLinkToClipboard), xTr("CopyLinkToClipboard") );
setMenuItem(page( )->action(QWebEnginePage::DownloadLinkToDisk), xTr("DownloadLinkToDisk") );
setMenuItem(page( )->action(QWebEnginePage::CopyImageToClipboard), xTr("CopyImageToClipboard") );
setMenuItem(page( )->action(QWebEnginePage::CopyImageUrlToClipboard), xTr("CopyImageUrlToClipboard") );
setMenuItem(page( )->action(QWebEnginePage::DownloadImageToDisk), xTr("DownloadImageToDisk") );
setMenuItem(page( )->action(QWebEnginePage::CopyMediaUrlToClipboard), xTr("CopyMediaUrlToClipboard") );
setMenuItem(page( )->action(QWebEnginePage::ToggleMediaControls), xTr("ToggleMediaControls") );
setMenuItem(page( )->action(QWebEnginePage::ToggleMediaLoop), xTr("ToggleMediaLoop") );
setMenuItem(page( )->action(QWebEnginePage::ToggleMediaPlayPause), xTr("ToggleMediaPlayPause") );
setMenuItem(page( )->action(QWebEnginePage::ToggleMediaMute), xTr("ToggleMediaMute") );
setMenuItem(page( )->action(QWebEnginePage::DownloadMediaToDisk), xTr("DownloadMediaToDisk") );
setMenuItem(page( )->action(QWebEnginePage::InspectElement), xTr("InspectElement") );
setMenuItem(page( )->action(QWebEnginePage::ExitFullScreen), xTr("ExitFullScreen") );
setMenuItem(page( )->action(QWebEnginePage::RequestClose), xTr("RequestClose") );
setMenuItem(page( )->action(QWebEnginePage::Unselect), xTr("Unselect") );
setMenuItem(page( )->action(QWebEnginePage::SavePage), xTr("SavePage") ); page( )->action(QWebEnginePage::SavePage)->setVisible(false);
setMenuItem(page( )->action(QWebEnginePage::OpenLinkInNewBackgroundTab), xTr("OpenLinkInNewBackgroundTab") );
setMenuItem(page( )->action(QWebEnginePage::ViewSource), xTr("ViewSource")); page( )->action(QWebEnginePage::ViewSource)->setVisible(false);
setMenuItem(page( )->action(QWebEnginePage::ToggleBold), xTr("ToggleBold") );
setMenuItem(page( )->action(QWebEnginePage::ToggleItalic), xTr("ToggleItalic") );
setMenuItem(page( )->action(QWebEnginePage::ToggleUnderline), xTr("ToggleUnderline") );
setMenuItem(page( )->action(QWebEnginePage::ToggleStrikethrough), xTr("ToggleStrikethrough") );
setMenuItem(page( )->action(QWebEnginePage::AlignLeft), xTr("AlignLeft") );
setMenuItem(page( )->action(QWebEnginePage::AlignCenter), xTr("AlignCenter") );
setMenuItem(page( )->action(QWebEnginePage::AlignRight), xTr("AlignRight") );
setMenuItem(page( )->action(QWebEnginePage::AlignJustified), xTr("AlignJustified") );
setMenuItem(page( )->action(QWebEnginePage::Indent), xTr("Indent") );
setMenuItem(page( )->action(QWebEnginePage::Outdent), xTr("Outdent") );
setMenuItem(page( )->action(QWebEnginePage::InsertOrderedList), xTr("InsertOrderedList") );
setMenuItem(page( )->action(QWebEnginePage::InsertUnorderedList), xTr("InsertUnorderedList") );
}
//----------------------------------------------------------------------------------------------------
void myWebEngineView::contextMenuEvent(QContextMenuEvent* event)
{
QMenu* menu = page( )->createStandardContextMenu( );
QPoint pt = event->globalPos( );
{
QList<QAction*> lsAtcions = menu->actions( );
for (QAction* act : lsAtcions)
{
//这几个菜单无法使用默认的方式来获取,只能这样来判断。
if (act->text( ).toLower( ).indexOf("back") != -1)
{
act->setText(xTr("Back"));
act->setIcon(QPixmap(":/App/images/menu/back.png"));
}
else if (act->text( ).toLower( ).indexOf("forward") != -1)
{
act->setText(xTr("Forward"));
act->setIcon(QPixmap(":/App/images/menu/forward.png"));
}
else if (act->text( ).toLower( ).indexOf("stop") != -1)
{
act->setText(xTr("Stop"));
}
else if (act->text( ).toLower( ).indexOf("reload") != -1)
{
act->setText(xTr("Reload"));
act->setIcon(QPixmap(":/App/images/menu/reload.png"));
}
else if (act->text( ).toLower( ).indexOf("reload and bypass cache") != -1)
{
act->setText(xTr("ReloadAndBypassCache"));
}
else if (act->text( ).toLower( ).indexOf("save page") != -1)
{
act->setVisible(false);
}
else if (act->text( ).toLower( ).indexOf("view page source") != -1)
{
act->setVisible(false);
}
}
//增加一个下载列表的菜单项
if (ELEWebEngineDownloadManager::instance( )->DownloadListCount( ) > 0)
{
menu->addSeparator( );
menu->addAction(QPixmap(":/App/images/menu/download.png"), xTr("ShowDownloadList"), this, [=]( )
{
RunJS("xInternalShowDownloadManager();");
});
}
//增加一个打印到PDF的菜单项
menu->addSeparator( );
menu->addAction(xTr("PrintToPDF"), this, [=]( )
{
QString path = QFileDialog::getSaveFileName(this, xTr("PrintToPDF"), QString( ), "*.pdf");
if (path.isEmpty( ))
{
return;
}
this->page( )->printToPdf(path);
});
menu->popup(pt);
lsAtcions.clear( ); //这个一定要有,不然退出时会崩溃,2019-11-15
}
}
//----------------------------------------------------------------------------------------------------