标题:求QWebEngineView 右键菜单汉化方法
作者:shixingya
日期:2018-12-27 17:16
内容:
求QWebEngineView 右键菜单汉化方法
#1 [dongfanglu 03-18 14:10]
同问,一直找不到设置语言的方法
#2 [yuying 04-19 17:22]
可以在Src\qtwebengine\src\webenginewidgets.pro 加入TRANSLATIONS 手动翻译,Qt的翻译文件没有翻译这个控件
#3 [杯子和盘子 11-07 12:19]
我的解决办法是:子类化QWebEngineView,设置上下文菜单模式为Qt::DefaultContextMenu,然后重新实现contextMenuEvent(QContextMenuEvent* event)即可,亲测有效
#ifndef webview_h__
#define webview_h__
#include
class QMenu;
class QAction;
class CWebView : public QWebEngineView
{
Q_OBJECT
public:
CWebView(QWidget* parent = nullptr);
~CWebView(){};
protected:
void contextMenuEvent(QContextMenuEvent* event);
private:
QMenu* m_pContextMenu;
QAction* m_pBackAct;
QAction* m_pForwardAct;
QAction* m_pReloadAct;
};
#endif // webview_h__
#include "webview.h"
#include
#include
#include
#include
CWebView::CWebView(QWidget* parent /*= nullptr*/) : QWebEngineView(parent)
{
m_pContextMenu = new QMenu;
m_pBackAct = new QAction(QIcon::fromTheme(QStringLiteral("go-previous")), tr("Back"));
m_pForwardAct = new QAction(QIcon::fromTheme(QStringLiteral("go-next")), tr("Forward"));
m_pReloadAct = new QAction(QIcon::fromTheme(QStringLiteral("view-refresh")), tr("Reload"));
m_pContextMenu->addAction(m_pBackAct);
m_pContextMenu->addAction(m_pForwardAct);
m_pContextMenu->addAction(m_pReloadAct);
connect(m_pBackAct, &QAction::triggered, this, &QWebEngineView::back);
connect(m_pForwardAct, &QAction::triggered, this, &QWebEngineView::forward);
connect(m_pReloadAct, &QAction::triggered, this, &QWebEngineView::reload);
setContextMenuPolicy(Qt::DefaultContextMenu); ..
#4 [你我渐行渐远 12-14 16:14]
对的,直接自定义,然后调用自己处理的槽函数
#5 [hshuxiang 01-07 17:51]
QT安装的时候,QWebEngine是有本地化的QM文件,只是没有简体中文的~
我选择了一个文件,把目标语言改成了简体中文。
然后自己做了简体中文的本地化~
在代码种加入
QTranslator qtwebengine_translator,qt_translator;
qtwebengine_translator.load(QStringLiteral(":/qm/qtwebengine_cn"));
app.installTranslator(&qtwebengine_translator);
完美实现中文汉化