2017-05-16 1 views
1

私はListViewを使用し、このListViewのすべてElementssignalを送信しようとします。これらの要素のいずれかからlistViewのすべての要素に信号を送信する方法

SignalListView's Elementのいずれかで送信する必要があります。

私はこれを試してみましたが、唯一の送信ElementキャッチSignal:私はドキュメントを誤解だと思うが、私は、このような場合のための任意のアイデアを良い例を見つけるために、問題がある

import QtQuick 2.7 
import QtQuick.Controls 2.0 
import QtQuick.Layouts 1.0 

ApplicationWindow { 
    id: window 
    visible: true 
    width: 640 
    height: 480 

    ListModel { 
     id: modelList 
     ListElement { 
      name: "Bill Smith" 
     } 
     ListElement { 
      name: "John Brown"  
     } 
     ListElement { 
      name: "Sam Wise" 
     } 
    } 

    ListView { 
     width: window.width 
     height: window.height  
     model: modelList 
     delegate: Rectangle { 
      id:elem 
      signal activated()  
      width: window.width 
      height: window.height/10 
      color: "red"  
      Button { 
       text: name 
       anchors{ 
        right: parent.right 
        top: parent.top 
        bottom: parent.bottom 
        margins: 10 
       } 
       onClicked: { 
        elem.activated() 
       } 
      } 
      onActivated: { 
       console.log("test") 
      } 
     } 
    } 
} 

あなたがListViewコントロールの親に信号を定義することができ
+0

あなたがhttps([ 'ButtonGroup']によって興味があるかもしれない親で定義された信号に://doc.qt.io/qt-5/qml-qtquick-controls2-buttongroup.html)を参照してください。 – GrecKo

答えて

2

(例えば。ApplicationWindow)及び代表者の内部シグナルハンドラを記述し、それを接続するには、

import QtQuick 2.7 
import QtQuick.Controls 2.0 
import QtQuick.Layouts 1.0 

ApplicationWindow { 
    id: window 
    visible: true 
    width: 640 
    height: 480 

    signal someSignal(int arg); 

    ListModel { 
     id: modelList 
     ListElement { 
      name: "Bill Smith" 
     } 
     ListElement { 
      name: "John Brown"  
     } 
     ListElement { 
      name: "Sam Wise" 
     } 
    } 

    ListView { 
     width: window.width 
     height: window.height  
     model: modelList 
     delegate: Rectangle { 
      id:elem 
      signal activated()  
      width: window.width 
      height: window.height/10 
      color: "red" 
      Connections{ 
       target: window 
       onSomeSignal: { 
        console.log("Argument: " + arg); 
       } 
      } 
      Button { 
       text: name 
       anchors{ 
        right: parent.right 
        top: parent.top 
        bottom: parent.bottom 
        margins: 10 
       } 
       onClicked: { 
        window.someSignal(1); 
       } 
      } 
      onActivated: { 
       console.log("test") 
      } 
     } 
    } 
} 
関連する問題