• 4251阅读
  • 3回复

[讨论]在一个Qml文件中如何访问另一个Qml文件中定义的元素? [复制链接]

上一主题 下一主题
 

只看楼主 倒序阅读 楼主  发表于: 2015-10-27
代码如下所示:
//EventsWindow.qml文件
import QtQuick 2.0
Rectangle {  
width: 100    
height: 62    
border{     width: 1     color: "black"    }
    Rectangle{  
  id:curve  
   Canvas{      id: canvas        }
   }
}

//PopMenu.qml
import QtQuick 2.0
import QtQuick.Controls 1.1
Rectangle {  
width: 30
   height: 30  
  
Button {        anchors.fill: parent        onClicked: {popMenu.popup()}    }  
  Menu {        id: popMenu    
    MenuItem {            text: "element1"            onTriggered: {}        }    
    MenuItem {            text: "element2"            onTriggered: {}        }  
     MenuItem {            text: "element3"            onTriggered: {}        }  
      Menu {            title: "element4"  
         MenuItem {                text: "subElement41"                onTriggered: {}            }    
       MenuItem {                text: "subElement42"                onTriggered: {}            }  
      }
   MenuItem {            text: "element5"            onTriggered: {}        }    }}

//main.qml
import QtQuick.Controls 1.1
Window {    visible: true    width: 360    height: 360  
Grid{     rows: 2     columns: 2     spacing: 20  
   Label{         id:popMenuLabel         text: "窗口选择"     }  
  PopMenu{      id: popMenu      eventWindow1: eventWindow     }
    EventsWindow{      id: eventWindow     }  
}}
问题:如何在PopMenu.qml中访问EventsWindow.qml文件中的canvas对象?
离线qyvlik

只看该作者 1楼 发表于: 2015-10-27
先不急着将代码这么复杂化。


这里我先简化一下代码:

  1. import QtQuick 2.0
  2. Item {
  3.     Canvas{
  4.         id: canvas
  5.     }
  6. }

现在有上述代码,就你问题题意而言,就是想访问到Canvas。

那么,使用alias就可以进行简单的属性绑定了。

  1. import QtQuick 2.0
  2. Item {
  3.     property alias canvas: inline_canvas
  4.     Canvas{
  5.         id: inline_canvas
  6.     }
  7. }
这样就可以直接通过 canvas 来访问到内部的 canvas 了。

其他的内部 Item 都可以这样访问。

ubiboot

只看该作者 2楼 发表于: 2015-10-28
那我们怎么在别的文件中访问canvas呢
离线lxbwolf

只看该作者 3楼 发表于: 2015-11-10
直接在别的文件中用你已经alias过的"canvas"就可以啦
快速回复
限100 字节
 
上一个 下一个