Russian Qt Forum
Май 08, 2024, 19:05 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Доступ к элементам qml из другого qml-файла  (Прочитано 4275 раз)
neiro
Гость
« : Июль 08, 2016, 13:02 »

Есть два файла qml.

1. main.qml

Код:
Window {
  visible: true

  Rectangle {
      id:rect
      width: 200
      height: 200
      color:"red"

      MouseArea {
          id: mouse
          anchors.fill: parent
      }
  }
}

2. secondary.qml

Код:
Window {
    visible: true

    Rectangle {
        id:rect2
        width: 300
        height: 300
        color:"green"

        MouseArea {
            anchors.fill:parent
            onClicked: {
                console.log ("click")
            }
        }
    }
}

Как в событии OnClicked для rect2 изменить цвет у rect?
Записан
Отражение луны
Гость
« Ответ #1 : Июль 09, 2016, 00:23 »

Все зависит от того как ты создаешь эти окна. То есть файла то 2, но грузишь ты их как?
Так или иначе задача сводится к тому, чтобы иметь в одном окне ссылку на другое окно. Объявить property можно так:
Код:
Window {
id: mainWindow
property var secondWindow: null
затем нужно при создании окна запихать туда ссылку на второе окно, после чего можно будет легко вызывать любые его функции и менять любые значения:
Код:
onClicked: console.log(secondWindow.visible);
Ну а чтобы цвет менять - тебе нужно будет задать на него алиас, или же использовать property binding:
Код:
property alias rectColor: rect.color
или
Код:
id: secondWindow
property string rectColor: "green"
...
Rectangle {
color: secondWindow.rectColor
...
Как результат:
Код:
onClicked: secondWindow.rectColor = "yellow"
« Последнее редактирование: Июль 09, 2016, 00:32 от Komorebi » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 21.