sách gpt4 ai đã đi

qt - Qt UI 文件如何使用 Qt Linguist?

In lại 作者:行者123 更新时间:2023-12-04 23:24:02 30 4
mua khóa gpt4 Nike

我正在使用 Qt 语言学家翻译一个 giao diện người dùng 文件。我使用 lupdate 获取了它的 ts 文件,并翻译了这些单词和短语。现在我想将它添加到我的代码中,但我从它的教程中发现我似乎必须将 tr() 添加到我代码中的每个单词和短语。我理解正确吗?我可以只加载翻译后的 qm 文件一次来进行翻译吗?如果是这样,我该如何在这个 giao diện người dùng 文件中做到这一点?

Cảm ơn trước.

làm mới

按照 Jens 提到的更改属性后,在我的 ui 头文件中我可以看到如下句子:

buttonSetupData->setText(QApplication::translate("MainWindow", "Set Data", 0, QApplication::UnicodeUTF8));

在 Ajith 的回答之后,我更改了代码,现在 ui_main.h 文件中的 retranslateUi 函数如下所示:

void retranslateUi ( QMainWindow *MainWindow )
{
QTranslator translator;
translator.load ( " ...\Test.ts " );
QApplication::installTranslator ( &translator );

MainWindow->setWindowTitle ( QApplication::translate ("MainWindow", "The Sentioscope - Beta v2.0 for Soccer", 0, QApplication::UnicodeUTF8));

...
}

但是还是不行。

最新更新

我当前读取“.qm”文件的函数是这样的:

void MainWindow::translate()
{
QTranslator translator;
translator.load ( "Test.qm", "D:\\" );
qApp->installTranslator ( &translator );
retranslateUi ( this );
}

然后我这样调用这个函数:

MainWindow::MainWindow ( QWidget *parent ) : QMainWindow ( parent )
{
setupUi(this);
translate();
}

在 Ajith 的最新回答之后,我更改了这种形式的警告/消息框的每个字符串(例如):

QMessageBox::warning( this, QMessageBox::tr("ERROR"), QMessageBox::tr("Invalid IP adress") );

vượt qua lupdate 我可以读取所有这些字符串,进行翻译并将它们保存在一个 qm 文件中。现在的问题是,它可以为 ui 翻译这些字符串,但不能为执行后的警告/消息框翻译。

1 Câu trả lời

我不完全确定您想从这个问题中完成什么。我认为您正在寻找一种在运行时从 C++ 代码加载“qm”文件的方法。如果是这样,您需要做的是使用 QTranslator类..

QTranslator translator;
translator.load("file.qm", "dir");
qApp->installTranslator(&translator);

làm mới

这对我有用..

主窗口.cpp

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
isChinese(false)
{
ui->setupUi(this);
msgbox = new QMessageBox(QMessageBox::NoIcon, "", "", QMessageBox::NoButton, this);
pbtn = msgbox->addButton("Ok", QMessageBox::AcceptRole);

doRetranslate();

QObject::connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(doTranslate()));
QObject::connect(ui->pushButton, SIGNAL(clicked()), msgbox, SLOT(show()));
}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::doTranslate()
{
QTranslator translator;
if (!isChinese) {
translator.load("test_zh_TW.qm", "../TestTranslator");
qApp->installTranslator(&translator);
isChinese = true;
} khác {
translator.load("", ""); // Default is english
qApp->installTranslator(&translator);
isChinese = false;
}
ui->retranslateUi(this);
doRetranslate();
}

void MainWindow::doRetranslate()
{
msgbox->setWindowTitle(QObject::tr("ERROR"));
msgbox->setText(QObject::tr("Invalid IP adress"));
pbtn->setText(QObject::tr("Ok"));
}

主窗口.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include
#include
#include

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

công cộng:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();

void doRetranslate();
public slots:
void doTranslate();

riêng tư:
Ui::MainWindow *ui;
bool isChinese;
QMessageBox *msgbox;
QPushButton *pbtn;
};

#endif // MAINWINDOW_H

主窗口.ui



MainWindow



0
0
400
300



MainWindow





100
70
181
17



Hello World!


Qt::AlignCenter





140
120
93
27



translate






0
0
400
23





TopToolBarArea


false








pushButton
clicked()
label
update()


199
165


206
114





关于qt - Qt UI 文件如何使用 Qt Linguist?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14135416/

30 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com