|
سلام
میخواستم بدونم وقتی ما از یک ویدجت Qt Quick در برنامه Qt استفاده میکنیم،چطور میشه به اشیاء Qt Quick دسترسی داشت.
مثلا در کد زیر چطور باید به خاصیت color در شئ Text دسترسی پیدا کنم و اون رو تغییر بدم.
Rectangle {
width: 300
height: 200
Text {
x: 12
y: 34
color:red
}
}
سلام
با استفاده از QDeclarativeProperty میتونید به اشیاء و property ها دسترسی داشته باشید.
به شئ Text یک property به نام objectName اضافه کنید،به صورت زیر:
Rectangle {
width: 300
height: 200
Text {
objectName: "txt1"
x: 12
y: 34
color: "red"
}
}
حالا میتونید با استفاده از کد زیر به این شئ دسترسی پیدا کنید:
view = QDeclarativeView(QUrl('widget.qml'),parent = object)
property = QDeclarativeProperty(view.rootObject().findChild(QDeclarativeItem, name="txt1"),"color")
property.write("green")
rootObject اشاره به شئ پدر ویدجت داره و تابع findChild به دنبال اشیائی از نوع QDeclarativeItem و نام txt1 میگرده و در نهایت property با نام color در دسترس ما قرار میگیره.
حالا با استفاده از تابع write میتونید مقدار color رو تغییر بدید.
سلام
اساسا در کد نویسیهای جدید QtQuick، روش MVC مناسبتر است. به این شکل که شما یک View یا نما میسازید مثل فایل ColorBox.qml و یک کلاس به نام مثلا MyController در C++ میسازید. سپس کنترلر خود (همان MyController) را به عنوان یک نوع جدید برای نما ثبت میکنید. در نهایت، از کنترلر خود در نما استفاده میکنید. به این صورت که مثلا رنگ rectangle_1 را به آن میدهید و کنترلر تصمیمات لازم را میگیرد.
برای اطلاعات بیشتر، پیشنهاد میکنم نمونه زیر را حتما مشاهده بفرمایید:
http://doc.qt.io/qt-5/qtqml-cppintegration-definetypes.html