55 lines
1.4 KiB
Nim
Raw Normal View History

2014-12-08 12:55:09 +01:00
import NimQml
import macros
import typeinfo
2014-12-01 21:02:33 +01:00
type MyQObject = ref object of QObject
m_name: string
2014-12-01 21:02:33 +01:00
2014-12-28 15:58:01 +01:00
method getName(myQObject: MyQObject): string =
result = myQObject.m_name
2014-12-28 15:58:01 +01:00
method setName(myQObject: MyQObject, name: string) =
if myQObject.m_name != name:
myQObject.m_name = name
myQObject.emit("nameChanged")
method onSlotCalled(myQObject: MyQObject, slotName: string, args: openarray[QVariant]) =
case slotName:
2014-12-28 15:58:01 +01:00
of "getName":
args[0].stringVal = myQObject.getName()
of "setName":
myQObject.setName(args[1].stringVal)
else:
discard()
proc mainProc() =
2014-12-01 21:02:33 +01:00
var app: QApplication
app.create()
defer: app.delete()
2014-12-08 12:55:09 +01:00
var myQObject = MyQObject()
2014-12-08 12:55:09 +01:00
myQObject.create()
defer: myQObject.delete()
myQObject.m_name = "InitialName"
2014-12-28 15:58:01 +01:00
myQObject.registerSlot("getName", [QMetaType.QString])
myQObject.registerSlot("setName", [QMetaType.Void, QMetaType.QString])
myQObject.registerSignal("nameChanged", [QMetaType.Void])
2014-12-28 15:58:01 +01:00
myQObject.registerProperty("name", QMetaType.QString, "getName", "setName", "nameChanged")
2014-12-01 21:02:33 +01:00
var engine: QQmlApplicationEngine
engine.create()
defer: engine.delete()
2014-12-01 21:02:33 +01:00
2014-12-08 12:55:09 +01:00
var variant: QVariant
variant.create(myQObject)
defer: variant.delete()
2014-12-01 21:02:33 +01:00
2014-12-08 12:55:09 +01:00
var rootContext: QQmlContext = engine.rootContext()
rootContext.setContextProperty("myQObject", variant)
2014-12-08 12:55:09 +01:00
engine.load("main.qml")
app.exec()
when isMainModule:
mainProc()