Могу ли я выбрать anchor.left или anchor.right в зависимости от значения bool переменной в QML?
Доброго времени суток!
У меня имеется модель списка сообщений в диалоге между двумя людьми. Для каждого сообщения имеется bool переменная, которая хранит true если сообщение отправлено мной, и false, если сообщение пришло мне.
На данный момент вот так выглядит описание делегата:
delegate: Rectangle {
width: msg_text.width
height: msg_text.height
color: "#000000"
opacity: 0.2
Text {
id: msg_text
color: "#000000"
text: model.message
}
}
Я хотел бы сделать, чтобы мои сообщения отображались справа, то есть для них должен быть anchor.right: parent.right, а для сообщений другого пользователя anchor.left: parent.left. Могу ли я вставить в описание делегата JavaScript код, который будет прикреплять сообщение к левой или правой границе, в зависимости от переменной bool?
В моем представлении это выглядит вот так, но QML ругается на неожиданную лексему if:
delegate: Rectangle {
if (model.fromClient) {
anchors.right = parent.right
}
else anchors.left = parent.left
}
Отходя от моей конкретной задачи, вопрос можно сформулировать так: можно ли с помощью ветвления задавать свойства объектам в QML?
Спасибо.
Ответы (1 шт):
Нашел ответ на свой вопрос в документации Qt для Anchors.
С моей проблемой помогло справиться значение undefined, которое удаляет свойство. В итоге код теперь выглядит вот так:
delegate: Rectangle {
id: message_rect
anchors.left: model.fromClient ? undefined : parent.left
anchors.right: model.fromClient ? parent.right : undefined
...