求QWebEngineView 右键菜单汉化方法

weixin_38050751 2019-09-19 06:35:04
求QWebEngineView 右键菜单汉化方法
...全文
953 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_38457735 2020-04-22
  • 打赏
  • 举报
回复
同问,楼主解决了吗
小笨象 2019-11-19
  • 打赏
  • 举报
回复
忘了:

QAction* myWebEngineView::setMenuItem(QAction* act, QString strItemText, QString strIconName)
{
	if (act)
	{
		act->setText(strItemText);
		if (strIconName.isEmpty( ) == false)
		{
			act->setIcon(QPixmap(strIconName));
		}
	}
	return act;
}
//----------------------------------------------------------------------------------------------------

小笨象 2019-11-19
  • 打赏
  • 举报
回复
直接上代码:

//----------------------------------------------------------------------------------------------------
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
	}
}
//----------------------------------------------------------------------------------------------------

  • 打赏
  • 举报
回复
楼主,问题解决了吗?我也遇到同样的需求,能否提供下思路?
源码直接下载地址: https://pan.quark.cn/s/1c143f32ee83 华为作为全球领先的通信设备供应商,其产品系列广泛涉及各类网络设备,其中包括我们接下来要探讨的上网卡产品。华为上网卡驱动程序是一种专门为华为品牌旗下多种型号上网卡开发的软件模块,其主要功能在于保障这些设备与计算机操作系统的无缝对接。涉及的型号涵盖EC8189、EC226、EC169C、EC360、EC1260、EC1261、EC189、EC122、EC150以及EC168,这些均是由华为公司推出的移动宽带调制解调器,旨在通过移动网络实现便捷的互联网接入服务。驱动程序在计算机系统中的地位举足轻重,它充当了硬件设备与操作系统之间的媒介,负责对硬件设备发出的指令进行解读和执行,并将操作系统的指令传递给硬件设备。华为上网卡驱动程序的及时更新和精准安装是保障设备稳定运作和性能达到最优的关键因素。"天翼宽带安装程序V1.3.3.exe"是由中国电信提供的一个整合性软件包,内含华为上网卡的驱动程序及配套的管理工具。用户可借助此安装程序来执行华为上网卡的相关驱动安装及更新,同步享受中国电信的3G或4G网络服务。版本标识V1.3.3代表软件经过迭代优化,通常包含了对错误的修正、性能的改善以及新功能的引入。 "SetupInfo.xml"作为安装程序的配置文档,其中收录了安装流程中的各项设定和元数据信息,例如安装流程、文件定位、依赖条件等。它是安装程序在执行时参照和遵循的纲领,旨在确保安装流程按既定方案进行。文件名"CT_HW_EVDO_Driver"或许指向华为的EVDO(Evolution-Data Optimized)驱动程序,EVDO是一种3G无线通信规范,具备高速数据传输的特性。该驱动可...

479

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧