2017-05-16 14 views
1

我使用的是ListView,我嘗試將signal發送給我的所有ElementsListView如何從這些元素之一發送信號到列表視圖的所有元素

Signal必須由ListView'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") 
      } 
     } 
    } 
} 

我想我誤解了文檔,但我有麻煩找到這種情況下一個很好的例子,任何想法?

+0

您可能會感興趣的['ButtonGroup'](HTTPS ://doc.qt.io/qt-5/qml-qtquick-controls2-buttongroup.html)取決於您的需求。 – GrecKo

回答

2

可以在ListView的父定義的信號(如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") 
      } 
     } 
    } 
} 
相關問題