我必须通过Qtcpsocket向控制器发送 48字节数据。我在字节中将每个位表示为QML中的按钮。因此,每当用户单击该按钮时,我必须将对应位设置为true / false并立即发送整个48字节的数据。 在这么多QML文件中我有很多按钮(Bits)。如何检测按下了哪个按钮并立即设置相应的位?如何在qml中获取对象? 我所做的是按下按钮时在Bit中发出信号。现在混淆了如何将它传递到后端c ++到套接字,因为那时我会有这么多的信号。我觉得这不是一个正确的方法。任何智能/更好的解决方案或类似的例子都会非常有用。谢谢
答案 0 :(得分:1)
我不完全理解你的代码你想要做什么,但可能这个例子可以帮助:
<强> Byte.qml 强>
import QtQuick 2.4
import QtQuick.Controls 1.2
Row {
id: block
property int number: 0
signal dataChanged()
Repeater {
model: 8
Button {
width: 20
height: 20
property int buttonIndex: index
text: buttonIndex
checkable: true
checked: false
onClicked: {
block.number = block.number ^ (1 << buttonIndex);
dataChanged();
}
}
}
}
<强> main.qml 强>
import QtQuick 2.4
import QtQuick.Window 2.0
Window {
id: win
width: 800
height: 600
Column {
id: numbers
property var bytes: []
anchors.centerIn: parent
Repeater {
model: 6
Byte {
property int byteIndex: index
Component.onCompleted: numbers.bytes[byteIndex] = 0;
onDataChanged: {
numbers.bytes[byteIndex] = number;
console.log(numbers.bytes);
}
}
}
}
}
我在这里使用6个字节来提出这个想法。您只需要将其发送到C ++而不是将其打印到控制台。在互联网上广泛描述了集成QML和c ++。您可以从here
开始