查看完整版本: [-- 求QWebEngineView 右键菜单汉化方法 --]

QTCN开发网 -> Qt基础编程 -> 求QWebEngineView 右键菜单汉化方法 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

shixingya 2018-12-27 17:16

求QWebEngineView 右键菜单汉化方法

求QWebEngineView 右键菜单汉化方法
[attachment=19807]

dongfanglu 2019-03-18 14:10
同问,一直找不到设置语言的方法

yuying 2019-04-19 17:22
可以在Src\qtwebengine\src\webenginewidgets.pro 加入TRANSLATIONS 手动翻译,Qt的翻译文件没有翻译这个控件[attachment=20146]

杯子和盘子 2019-11-07 12:19
我的解决办法是:子类化QWebEngineView,设置上下文菜单模式为Qt::DefaultContextMenu,然后重新实现contextMenuEvent(QContextMenuEvent* event)即可,亲测有效

#ifndef webview_h__
#define webview_h__
#include <QWebEngineView>
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 <QMenu>
#include <QAction>
#include <QIcon>
#include <QWebEngineHistory>

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);
}

void CWebView::contextMenuEvent(QContextMenuEvent* event)
{
    m_pBackAct->setEnabled(this->history()->canGoBack());
    m_pForwardAct->setEnabled(this->history()->canGoForward());

    m_pContextMenu->exec(QCursor::pos());
}

最后配置自己的翻译文件即可

你我渐行渐远 2019-12-14 16:14
对的,直接自定义,然后调用自己处理的槽函数

hshuxiang 2020-01-07 17:51
[attachment=21230]
QT安装的时候,QWebEngine是有本地化的QM文件,只是没有简体中文的~
我选择了一个文件,把目标语言改成了简体中文。
[attachment=21231]

然后自己做了简体中文的本地化~
在代码种加入
QTranslator qtwebengine_translator,qt_translator;    
qtwebengine_translator.load(QStringLiteral(":/qm/qtwebengine_cn"));    
app.installTranslator(&qtwebengine_translator);
完美实现中文汉化


查看完整版本: [-- 求QWebEngineView 右键菜单汉化方法 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled