我想在.pro文件中的我的translations文件夹中添加路径,该路径可以从C ++ / QML部件访问,也可以在.pro文件中使用。
我遇到了DEFINES + =函数,并使用一个数字PI的示例进行了处理。可以使用qDebug()从C ++调用此定义。
现在,我在.pro文件上方的两个目录中有一个translations文件夹,这就是Translations。因此,我尝试使用类似以下的内容:
DEFINES += "TRANSPATH=\"../../translations\""
但是当我尝试通过qDebug访问它时,我得到了错误 -预期的主要表达 和 -预期在“。”之前的不合格ID。令牌
在我的.pro文件中,我也想访问TRANSPATH,但使用方式类似
TRANSLATIONS += \
$$(TRANSPATH)/test_TEST.ts \
../../translations/de_DE.ts \
../../translations/zh_CN.ts
}
仅导致此错误:
Updating '../../../../../../../test_TEST.ts'...
Found 63 source text(s) (63 new and 0 already existing)
Cannot create /test_TEST.ts: Zugriff verweigert
Updating '../../translations/de_DE.ts'...
Found 63 source text(s) (0 new and 63 already existing)
我尝试在线查找其他示例,但没有发现任何有用的信息。 在翻译+ =部分中,我将措辞更改为:
TRANSPATH/test_TEST.ts
{TRANSPATH}/test_TEST.ts
$$TRANSPATH/test_TEST.ts
$${TRANSPATH}/test_TEST.ts
但没有任何效果。这是我第一次尝试定义某些内容,也许我做错了吗?请帮助
示例代码/ .pro文件:
# this file will be loaded from the main import path
MAIN_QML_FILE = main.qml
INCLUDEPATH += ./Plugins
INCLUDEPATH += ./qml
DEFINES += "PI=\"3.1415926\""
DEFINES += "TRANSPATH=\"../../translations\""
QT += core
# this is only seen by the linguist tools (lupdate)
lupdate_only{
SOURCES = \
../../qml/Widgets/SomeFiles/*.qml
TRANSLATIONS += \
$$(TRANSPATH)/test_TEST.ts \
../../translations/de_DE.ts \
../../translations/zh_CN.ts
}
TRANSPATH应该与../../translations/de_DE.ts指向同一文件夹 路径呢。该路径将从C ++中重新用于自定义QTranslator对象。
答案 0 :(得分:2)
首先,来自qmake
的错误:
Cannot create /test_TEST.ts: Zugriff verweigert
来自这里:
$$(TRANSPATH)/test_TEST.ts
您引用的是未定义的变量,即TRANSPATH。当您这样做时:
DEFINES += "TRANSPATH=\"../../translations\""
您未定义变量:您正在使用-D
标志将定义添加到编译器命令行(您可以在创建者的编译输出窗格中进行检查) )。
因此,只有一个qmake
变量:
TRANSPATH = ../../translations
现在您可以在专业文件中的其他位置使用它,例如
TRANSLATIONS += \
$$(TRANSPATH)/test_TEST.ts \
../../translations/de_DE.ts \
../../translations/zh_CN.ts
}
您也可以在DEFINES
中使用它,但要避免转义:
DEFINES += "TRANSPATH=\\\"$$TRANSPATH\\\""
在编译器中,您会找到
-DTRANSPATH=\"..\..\translations\"
以及其他标志。
现在您可以放心了
qDebug() << TRANSPATH;
在您的源代码中。