Registre un singleton con una función anónima
SQLiteHelper *sqliteHelper=new SQLiteHelper();
qmlRegisterSingletonType<PersonListViewModel>("MyPackage",1,0,"PersonListViewModel",[=](QQmlEngine *engine, QJSEngine *scriptEngine){
Q_UNUSED(engine);
Q_UNUSED(scriptEngine)
PersonListViewModel *personListViewModel=new PersonListViewModel(sqliteHelper);
return personListViewModel;
});
qml usa un singleton
importar MyPackage 1.0 como MyPackage10
modelo: MyPackage10.PersonListViewModel
import QtQuick 2.12
import QtQuick.Controls 2.5
import MyPackage 1.0 as MyPackage10
Rectangle {
anchors.fill: parent
anchors.leftMargin: 3
anchors.rightMargin: 3
anchors.topMargin: 3
anchors.bottomMargin: 3
property var _ID
property var _Name
property var _Age
property int _Index: -1
color: "transparent"
Rectangle{
id:header
height: 50
width: parent.width
Grid {
id: grid
columns: 4
rows: 2
width: parent.width
Label{
text: "姓名:"
}
TextInput {
id:personname
text: _Name===undefined?"未选择":_Name
color: "blue"
}
Label{
text: "年龄:"
color: "red"
}
TextInput {
id:personage
text: _Age===undefined?"未选择":_Age
color: "blue"
}
Button{
text: "修改"
onClicked: {
MyPackage10.PersonListViewModel.updataPerson(_ID,personname.text,personage.text)
}
}
Button{
text: "添加"
onClicked: {
console.log("姓名:"+personname.text+"年龄"+personage.text)
MyPackage10.PersonListViewModel.addItem(personname.text,personage.text);
}
}
Button{
text: "删除"
onClicked: {
MyPackage10.PersonListViewModel.deleteItem(_ID);
list.currentIndex=-1;
}
}
}
}
ListView {
id:list
width: parent.width;
anchors.top: header.bottom
anchors.bottom: parent.bottom
model: MyPackage10.PersonListViewModel
spacing: 3
clip: true
highlight: Rectangle{
radius: 10
width: parent===null?0:parent.width
color: "blue"
}
ScrollBar.vertical: ScrollBar{}
highlightFollowsCurrentItem: true
keyNavigationEnabled:true
delegate:Rectangle {
radius: 10
border.color: "gray"
color: "transparent"
height: 30
width: parent.width
anchors.leftMargin: 5
Text {
x:10
anchors.fill: parent
anchors.leftMargin: 5
text:"姓名:"+name+"----------年龄:"+age+"----------ID:"+id
verticalAlignment:Text.AlignVCenter
}
MouseArea{
anchors.fill: parent
onClicked: {
_Age=age
_Name=name
_ID=id
_Index=index;
list.currentIndex=_Index;
console.log(_Name,_Age,_ID)
}
}
}
}
}