我正在关注http://doc.qt.io/qt-5/qtwidgets-widgets-calculator-example.html的Qt计算器示例。 我遇到了下面的代码。
for (int i = 0; i < NumDigitButtons; ++i) {
digitButtons[i] = createButton(QString::number(i), SLOT(digitClicked()));
}
Button *pointButton = createButton(tr("."), SLOT(pointClicked()));
Button *changeSignButton = createButton(tr("\302\261"), SLOT(changeSignClicked()));
Button *backspaceButton = createButton(tr("Backspace"), SLOT(backspaceClicked()));
Button *clearButton = createButton(tr("Clear"), SLOT(clear()));
Button *clearAllButton = createButton(tr("Clear All"), SLOT(clearAll()));
Button *clearMemoryButton = createButton(tr("MC"), SLOT(clearMemory()));
Button *readMemoryButton = createButton(tr("MR"), SLOT(readMemory()));
Button *setMemoryButton = createButton(tr("MS"), SLOT(setMemory()));
Button *addToMemoryButton = createButton(tr("M+"), SLOT(addToMemory()));
Button *divisionButton = createButton(tr("\303\267"), SLOT(multiplicativeOperatorClicked()));
Button *timesButton = createButton(tr("\303\227"), SLOT(multiplicativeOperatorClicked()));
Button *minusButton = createButton(tr("-"), SLOT(additiveOperatorClicked()));
Button *plusButton = createButton(tr("+"), SLOT(additiveOperatorClicked()));
Button *squareRootButton = createButton(tr("Sqrt"), SLOT(unaryOperatorClicked()));
Button *powerButton = createButton(tr("x\302\262"), SLOT(unaryOperatorClicked()));
Button *reciprocalButton = createButton(tr("1/x"), SLOT(unaryOperatorClicked()));
Button *equalButton = createButton(tr("="), SLOT(equalClicked()));
但是,我无法理解tr("\302\261")
,tr("\303\267")
,tr("x\302\262")
对于以下几行的含义。
Button *changeSignButton = createButton(tr("\302\261"), SLOT(changeSignClicked()));
Button *divisionButton = createButton(tr("\303\267"), SLOT(multiplicativeOperatorClicked()));
Button *powerButton = createButton(tr("x\302\262"), SLOT(unaryOperatorClicked()));
当我删除\303\267
时,我发现÷符号消失了。所以我猜它与分裂按钮有某种关系。
我不知道\ 303 \ 267如何与分裂有关。我搜索了Qt文档页面,一无所获。
我的问题是:
此示例中tr("\302\261")
,tr("\303\267")
和tr("x\302\262")
的含义是什么?
答案 0 :(得分:2)
tr()
函数用于将给定字符串(可选)转换为其他语言。来自this answer available on Qt forum:
如果您希望应用程序具有多种语言支持,请将代码中的每个用户可见字符串包装在tr()函数中。然后Qt将在不同的语言环境中使用适当的翻译字符串。当然Qt实际上不会为你翻译,你(或你的翻译家伙)必须用QtLinguist来做。
传递给tr()
函数的字符串是UTF-8字符的八进制代码。如您所知,\303\267
为÷
。 \302\261
为±
,x\302\262
表示x
为2的权力(x
后跟上标2字符。)