2016-12-07 3 views
1

나는 이미지에 의해 가려 질 필요가있는 목록보기를 가지고있다. 스크롤에 따라 너비를 줄여야하는 강조 요소를 사용하고 있기 때문에 이 코드로 가능합니까? 이 문제가 잘못 되었다면 나에게 몇 가지 방법을 제안하십시오.qml에서 목록보기를 마스크하는 방법은 무엇입니까?

Item{ 
     id: test 
     x: 0 
     y: 0 
     width: 1920 
     height: 720 


     ListView { 
      id: source_list 
      x: 0 
      y: 0 
      width: 600 
      height: 720 
      spacing: 40 
      model: mediaSongsModel 
      delegate: mediaSongsDelegate 
      focus: true 
      interactive: true 
      highlightFollowsCurrentItem: true 
      highlightMoveDuration: 0 
      highlight: highlightBar 
      snapMode: ListView.SnapOneItem 
      preferredHighlightBegin:260/scaleFactor 
      preferredHighlightEnd: 260/scaleFactor 
      highlightRangeMode : ListView.ApplyRange 

     } 

     layer.enabled: true 
     layer.effect: OpacityMask { 

      maskSource:Item { 
       width: 100 
       height: 500 

       Image{ 
        id :crop 
        x: 0 
        y: 0 
        width: 600 
        height: 720 
        source :"image/bg.png" 

       } 

      } 

     } 

    } 
+0

정확히 무엇을하고 싶습니까? 오류가 무엇입니까? 귀하의 질문을 명확히하십시오. – folibis

+0

이미지에 마스크를 추가하고 싶습니다. 즉, 이미지 이외의 외부 부분은 목록보기에서 클리핑되어야합니다. –

답변

0

뭔가 이미 그랬던 것처럼 :

import QtQuick 2.7 
import QtQuick.Window 2.2 
import QtGraphicalEffects 1.0 

Window { 
    visible: true 
    width: 600 
    height: 600 

    Rectangle { 
     id: rect 
     width: 400 
     height: 400 
     anchors.centerIn: parent 
     color: "black" 
     visible: (img.status == Image.Ready) 
     ListView { 
      anchors.fill: parent 
      model: 30 
      delegate: Text { text: "itemmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm" + index; color: "yellow" } 
     } 
     layer.enabled: true 
     layer.effect: OpacityMask { 
      maskSource: img 
     } 
    } 

    Image { 
     id: img 
     source: "https://upload.wikimedia.org/wikipedia/commons/thumb/5/53/Google_%22G%22_Logo.svg/1024px-Google_%22G%22_Logo.svg.png" 
     width: 400 
     height: 400 
     anchors.centerIn: parent 
     visible: false 

    } 


} 

하지만 난 당신이 마우스 이벤트를 마스크 수 있다고 생각하지 않습니다.

관련 문제