我具有其中轉換器被以通常的方式成功安裝的應用程序:TR()函數不工作了遷移從Qt的4至Qt的5
bool bSuccess = qApp->installTranslator(m_translator);
凡m_translator
是一個指針,指向從QTranslator
派生的類。
當應用程序使用Qt 4.7.4編譯下面所有的說明做工精細:
QString qTranslString = m_translator->translate("", "string_to_be_translated");
QString qTranslString = QCoreApplication::translate("", "string_to_be_translated");
QString qTranslString = tr("string_to_be_translated");
但當相同的應用,同一個項目設置,編譯爲Qt 5.2.1,在Windows或Linux上只能編號1正在工作。 另外兩個是不是要求的m_translator
的翻譯方法。
這裏是用於再現該問題的最小例如:
minimalpbm.pro:
greaterThan(QT_MAJOR_VERSION, 4) {
QT += widgets
}
TARGET = minimalpbm
TEMPLATE = app
SOURCES += main.cpp
HEADERS += mytranslator.h
mytranslator.h:
#include <QTranslator>
class MyTranslator : public QTranslator
{
Q_OBJECT
public:
explicit MyTranslator(QObject *parent = 0);
~MyTranslator();
bool isEmpty() const;
QString translate(const char *context, const char *sourceText, const char *comment = 0) const;
private:
};
的main.cpp:
#include <QApplication>
#include <QMainWindow>
#include "mytranslator.h"
MyTranslator::MyTranslator(QObject *parent) : QTranslator(parent)
{
}
MyTranslator::~MyTranslator()
{
}
bool MyTranslator::isEmpty() const
{
return false;
}
QString MyTranslator::translate(const char* /*context*/, const char* sourceText, const char* /*comment*/) const
{
QString translation;
(void) sourceText;
translation = "Window Title"; // No matter what the source text is we return the same translation for test
return translation;
}
int main(int argc, char *argv[])
{
QApplication qA(argc, argv);
QMainWindow qW; // Create main window
MyTranslator *m_translator = new MyTranslator(&qW); // Install translator
qApp->installTranslator(m_translator);
qW.setWindowTitle(qW.tr("ST_TITLE")); // Set title
qW.show(); // Show main window
return qA.exec(); // Main event loop
}
隨着Qt4的窗口標題是「窗口標題」, 與Qt5窗口標題是「ST_TITLE」。
任何提示? 非常感謝您提前!
你得到任何編譯錯誤?你怎麼知道這個方法沒有被調用? –
沒有編譯錯誤。我知道,因爲調試器在我的自定義'translate'('m_translator-> translate')函數中沒有中斷。 – mbjoe
好,如果你能爲我們提供一個最小的例子來重現你的問題。否則,我們只能猜測。例如。你真的調用'app.installTranslator(m_translator)'? m_translator對象的範圍是什麼? – E4z9