Как изменить текст QMenu с английского на русский, нажав кнопку - PullRequest
1 голос
/ 22 марта 2010

Пожалуйста, обратите внимание, что у нас есть меню с текстом, установленным «MyMenu», и я хочу изменить текст меню, нажав кнопку в том же виджете с «MyMenu» на «МойМеню». Не могли бы вы принести фрагмент кода, пожалуйста, для этой операции?

Ответы [ 2 ]

4 голосов
/ 22 марта 2010

Посмотрите на "Динамический перевод", http://doc.qt.io/qt-5/internationalization.html

void MyWidget::changeEvent(QEvent *event)
{
    if (e->type() == QEvent::LanguageChange)
    {
        titleLabel->setText(tr("Document Title"));
        ...
        okPushButton->setText(tr("&OK"));

        // You could also use : retranslateUi(QWidget*);
    } 
    else
    {
        QWidget::changeEvent(event);
    }
}

Это будет полезно и вам: http://doc.qt.io/qt-5/qcoreapplication.html#installTranslator

Обычно, когда вы вызываете: qApp-> installTranslator (MyAppTranslator) , это создаст QEvent :: LanguageChange .

Итак, предоставьте простой QComboBox с английским / русским языком, и, когда выбранный язык изменится, вызовите qApp-> installTranslator (MyAppTranslator); . Затем убедитесь, что ваши кнопки правильно настроены в changeEvent , и все!

Надеюсь, это немного поможет!

0 голосов
/ 26 марта 2010
int main(int argc, char *argv[])
{

    QApplication app(argc, argv);

    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));//this is the solution
    .............
}

И в коде вы можете динамически изменять строки, если вы устанавливаете их с самого начала с помощью функции tr () [tr ("ваш текст")].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...