首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QTextEdit默认上下文菜单上的QTranslator

QTextEdit默认上下文菜单上的QTranslator
EN

Stack Overflow用户
提问于 2013-06-26 19:53:45
回答 2查看 1K关注 0票数 1

我在PyQt5中使用qt_xx.qm从site-packages/PyQt5/translations文件夹翻译QTextEdit、QPlainTextEdit和QTextBrowser的默认上下文菜单时遇到了问题。例如,对于QLineEdit,它可以正常工作(这是相同的上下文菜单)。如何应对?

重现问题的代码:

代码语言:javascript
复制
# coding: utf-8

import sys

from PyQt5.QtCore import QLocale
from PyQt5.QtCore import QTranslator
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtWidgets import QWidget
from PyQt5.QtWidgets import QLineEdit
from PyQt5.QtWidgets import QTextEdit
from PyQt5.QtWidgets import QVBoxLayout


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)

        widget = QWidget()

        lineEdit = QLineEdit()
        textEdit = QTextEdit()

        vbox = QVBoxLayout(widget)
        vbox.addWidget(lineEdit)
        vbox.addWidget(textEdit)

        self.setCentralWidget(widget)


if __name__ == '__main__':

    app = QApplication(sys.argv)
    locale = QLocale.system().name()

    qtTranslator = QTranslator()
    if qtTranslator.load('C:/Python33/Lib/site-packages/PyQt5/translations/qt_' + locale):
        app.installTranslator(qtTranslator)

    mainWindow = MainWindow()
    mainWindow.show()
    app.exec_()
EN

回答 2

Stack Overflow用户

发布于 2014-08-12 12:29:25

我遇到了同样的问题,我试图通过修改通过调用QTextEdit::createStandardContext方法创建的标准上下文菜单来解决这个问题,它确实起作用了。

代码如下:

代码语言:javascript
复制
void CWQTextEdit::contextMenuEvent(QContextMenuEvent *e)
{
    QMenu *menu = QTextEdit::createStandardContextMenu();
    if (menu == NULL)
        return QTextEdit::contextMenuEvent(e);

    QList<QAction*> actions = menu->actions();

    foreach (QAction *action, actions)
    {
       QString actionText = action->text();
       if (actionText.contains("Undo"))
       {
           actionText.replace("Undo", tr("Undo"));
           action->setText(actionText);
       }
       else if (actionText.contains("Redo"))
       {
           actionText.replace("Redo", tr("Redo"));
           action->setText(actionText);
       }
       else if (actionText.contains("Cu&t"))
       {
           actionText.replace("Cu&t", tr("Cut"));
           action->setText(actionText);
       }
       else if (actionText.contains("Copy"))
       {
           actionText.replace("Copy", tr("Copy"));
           action->setText(actionText);
       }
       else if (actionText.contains("Paste"))
       {
           actionText.replace("Paste", tr("Paste"));
           action->setText(actionText);
       }
       else if (actionText.contains("Delete"))
       {
           actionText.replace("Delete", tr("Delete"));
           action->setText(actionText);
       }
       else if (actionText.contains("Select All"))
       {
           actionText.replace("Select All", tr("Select All"));
           action->setText(actionText);
       }
    }

    menu->exec(e->globalPos());
}
票数 0
EN

Stack Overflow用户

发布于 2018-05-28 15:22:50

代码语言:javascript
复制
if __name__ == "__main__":
    app = QApplication(argv)
    translator = QtCore.QTranslator()
    translator.load("translations/qt_zh_CN.qm")
    app.installTranslator(translator)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17319288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档