繁体   English   中英

Qt Qml 树 model 带有翻译的菜单

[英]Qt Qml tree model menu with translations

I am trying to make an app with live translation of text in a large tree model menu structure, in the same manner as: https://code.qt.io/cgit/qt/qtbase.git/tree/examples/widgets/ itemviews/simpletreemodel?h=5.15

该项目的“数据”是一个 QString 被翻译为

root = new MenuObject(tr("Main menu"));

并且孩子被附加如下:

root->appendChild(new MenuObject(tr("Test 1")))
    .appendChild(new MenuObject(tr("Test 2")))

我正在使用 QML 来显示这些,并使用 qmllistpoprerty 来显示这些菜单,例如:

Q_PROPERTY(QQmlListProperty<MenuObject> list READ getList NOTIFY listChanged);

QML 是一个简单的 ListView,带有一个委托 Label,显示带有 q_property 的 MenuObjects 描述:

Q_PROPERTY(QString description READ getDescription CONSTANT);

要更改语言,我使用 function 将翻译文件输入翻译器,然后:

installTranslator(translator);
engine.retranslate();

现在这确实适用于简单的 q_properties,例如:

Q_PROPERTY(QString header READ getHeader NOTIFY listChanged);

在哪里

QString MainMenu::getHeader(){
    return tr("Header");
}

但我无法让翻译适用于树模型中的项目。 任何帮助表示赞赏。

如果您的description道具永远不会触发更新信号,那么您的 UI 将永远不会刷新它。

它适用于Q_PROPERTY(QString header READ getHeader NOTIFY listChanged); 是因为大概只要header也应该改变,就会触发listChanged()信号。

要修复它,您需要为您的description声明一个适当的NOTIFY信号,当然它不再是CONSTANT

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM