Russian Qt Forum

Qt => Qt Quick => Тема начата: nekitozzz от Июль 05, 2012, 03:01



Название: [РЕШЕНО] Удаление Qml элемента во время выполнения программы
Отправлено: nekitozzz от Июль 05, 2012, 03:01
Возможно-ли это? Не просто скрыть, как visible: false, а удалить, чтобы он не реагировал на обработчики OnClick и другие.


Название: Re: Удаление Qml элемента во время выполнения программы
Отправлено: lighting от Июль 05, 2012, 09:42
На OnClick он и так не будет реагировать.
Цитировать
Setting this property to false automatically causes focus to be set to false, and this item will longer receive mouse and keyboard events. (In contrast, setting the opacity to 0 does not affect the focus property and the receiving of key events.)


Название: Re: Удаление Qml элемента во время выполнения программы
Отправлено: nekitozzz от Июль 05, 2012, 09:46
На OnClick он и так не будет реагировать.

Это хорошо, а на другие, особенно собственоручно написанные?


Название: Re: Удаление Qml элемента во время выполнения программы
Отправлено: ecspertiza от Июль 05, 2012, 09:46
попробовать вызвать destroy() вот пример из документации

Код:
 import QtQuick 1.0

 Rectangle {
     id: rect
     width: 80; height: 80
     color: "red"

     NumberAnimation on opacity {
         to: 0
         duration: 1000

         onRunningChanged: {
             if (!running) {
                 console.log("Destroying...")
                 rect.destroy();
             }
         }
     }
 }


Название: Re: Удаление Qml элемента во время выполнения программы
Отправлено: nekitozzz от Июль 05, 2012, 10:38
попробовать вызвать destroy()

я так понял его нельзя вызывать из другого объекта?


Название: Re: Удаление Qml элемента во время выполнения программы
Отправлено: ecspertiza от Июль 05, 2012, 10:50
Если честно не пробовал, но что помешает вызвать его из другого объекта ? Код на коленке

Код:
import QtQuick 1.0

Item {
  id:root
 
  width:300
  height: 300
 
  Rectangle {
    id: firstRect
   
    x: 50
    y: 50
    width: 100
    height: 100
   
    color: "red"
  }
 
  Rectangle {
    id: secondRect
    x : 160
    y: 50
    width:100
    height: 100
   
    color: "blue"
   
    MouseArea {
      anchors.fill: parent
     
      onClicked: {
firstRect.destroy()
      }
    }
   
  }
}


Название: Re: Удаление Qml элемента во время выполнения программы
Отправлено: nekitozzz от Июль 05, 2012, 11:34
Спасибо большое, разобрался)