QML调用C++
c++类要继承QOBJECT
方法一
qmlRegisterType<mySerialPort>("io.qt.example.myserialport", 1, 0, "mySerialPort");
注册到QML环境中
QML中就可以当作普通组件使用了。
尝试的时候,怎么都不成功,最后找到原因,QML文件与C++文件要在一个目录下。不在一个目录下总报错。
方法二
qmlRegisterType<mySerialPort>("io.qt.example.myserialport", 1, 0, "mySerialPort");
这种是把一个对象实体暴露给QML,没有同一目录的限制。
Listview的使用
ListView
{
id: listvie_port
anchors.fill: parent
model:ListModel
{
id: myModel
ListElement
{
Name: "端口号"
}
}
delegate: Component
{
id: dragDelegate
Rectangle
{
id: content
anchors
{
left: parent.left;
right: parent.right
}
height: column.implicitHeight + 40
border.width: 2
border.color: "lightsteelblue"
radius: 2
Column
{
id: column
anchors { fill: parent; margins: 2 }
Text { text: 'Port : ' + Name }
}
}
}
Component.onCompleted:
{
for (var name in mySerialPort.GetPortList)
{
myModel.append({"Name": "COM" + name})
}
}
}
参考的自带的例程,具体含义也不是全懂
ListMode类似于数据的存储
Component类似显示的定义。