如何从这些元素之一向 listView 的所有元素发送信号
How to send a signal to all element of a listView from one of these element
我使用 ListView
并尝试将 signal
发送到此 ListView
的所有 Elements
。
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")
}
}
}
}
我想我误解了文档,但我很难为这种情况找到一个好的例子,有什么想法吗?
您可以在 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")
}
}
}
}
我使用 ListView
并尝试将 signal
发送到此 ListView
的所有 Elements
。
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")
}
}
}
}
我想我误解了文档,但我很难为这种情况找到一个好的例子,有什么想法吗?
您可以在 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")
}
}
}
}