簡體   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