Разработка приложений на C++_Практическая работа №12
.pdf
model: ListModel { ListElement { text: "Item 1" } ListElement { text: "Item 2" } ListElement { text: "Item 3" }
}
delegate: Item {
width: listView.width height: 50
Text {
text: model.text anchors.centerIn: parent
}
}
AddAnimation { id: animation target: listView property: "width" from: 0
to: 500 duration: 1000
easing.type: Easing.InOutQuad
}
}
Button {
5
id: btn
text: "Add Item" anchors {
centerIn: parent
//horizontalCenter: parent.horizontalCenter //top: listView.bottom
topMargin: 30
}
onClicked: {
listView.model.append({ text: "New Item" }) animation.running = true
}
}
}
6
Модуль 3 Тема 3.8
1
1. Приведите пример применения наиболее распространенного способа
маркировки строк — функции qsTr().
Text {
id: txt1;
anchors.centerIn: parent text: qsTr("Back");
}
Этот код делает “Back” ключевой записью в файлах перевода. Во время выполнения система перевода ищет ключевое слово “Back”, а затем получает соответствующее значение перевода для текущей локали системы. Результат возвращается свойству text, и пользовательский интерфейс показывает соответствующий перевод “Back” для текущей локали.
Используйте %x для вставки параметров в строку
Разные языки объединяют слова в разном порядке, поэтому не рекомендуется создавать предложения, объединяя слова и данные. Вместо этого используйте % для вставки параметров в строки. Например, в
следующем фрагменте есть строка с двумя числовыми параметрами %1 и %2.
Эти параметры вставляются с .arg() функциями.
Text {
text: qsTr("File %1 of %2").arg(counter).arg(total)
}
%1 относится к первому параметру и %2 относится ко второму параметру, поэтому этот код выводит что-то вроде: «Файл 2 из 3».
2. Приведите пример кода с использованием QT_TR_NOOP() для
транслируемых текстовых строк данных
Транслируемые - это значит переводимых.
2
Если пользователь меняет язык системы без перезагрузки, в зависимости от системы строки в массивах и моделях списков, а также другие структуры данных могут не обновляться автоматически. Чтобы принудительно обновлять тексты при отображении в пользовательском интерфейсе,
необходимо объявить строки с атрибутом QT_TR_NOOP() макрос. Затем,
когда вы заполняете объекты для отображения, вам нужно явно получить перевод для каждого текста. Например:
ListModel {
id: myListModel; ListElement {
name: QT_TR_NOOP("Helsinki");
}
}
Text {
text: qsTr(myListModel.get(0).name);
}
3
