ورود

View Full Version : سوال: ارتباط دو طرفه بین آیتم های مدل c++ و ویو QML



++Hadi++
دوشنبه 24 اسفند 1394, 03:16 صبح
سلام
من می خوام یه تایم لاین تو کیوت بنویسم که به صورت ترکیبی C++‎‎‎‎‎‎ و qml باشه.
یعنی مدل ها تو C++‎‎‎‎‎‎ و ویو در qml
کاربر اگه آیتم رو تو تایم لاین اضافه کنه که اضافه می شه و می تونه کار رو با یه دکمه حذف کنه.
مسلمایه ارتباط دو طرفه بین آیتم های مدل و ویو نیاز هست که حتی اگه طرف کار رو در زمان درگ کرد، بتونه رو مدل تاثیر بزاره و زمان شروع و ... رو تغییر بده.
بهترین نوع ارتباط دو طرفه بین کیو ام ال و سی پلاس تو این حالت چجوریه و چکار باید بکنم.
من ایده کاربردی برا استفاده از qproperty و ... می خوام.
برا توضیح بهتر می خوام n تا آیتم رو بسازم که به محض ساختشون، یه شی از نوع کلاس مدلم در C++‎‎‎‎‎‎ بوجود بیاد و یه شی از نوع مثلا Rectangle در QML که ویو ام هست.
حتی یه لینک هم می تونه کمک کنه...
رفرنس های زیادی رو گشتم که همشون در مورد صدا زدن توابع از داخل همدیگر و ... توضیح داده ولی همچین چیزی رو نگفته...(ارتباط بین n شی موازی که به صورت داینامیک ساخته می شند که یه قسمتی در C++‎ هست و یه قسمتی در QML )

کامبیز اسدزاده
دوشنبه 24 اسفند 1394, 04:20 صبح
سلام
من می خوام یه تایم لاین تو کیوت بنویسم که به صورت ترکیبی C++‎‎‎‎‎‎‎‎‎‎ و qml باشه.
یعنی مدل ها تو C++‎‎‎‎‎‎‎‎‎‎ و ویو در qml
کاربر اگه آیتم رو تو تایم لاین اضافه کنه که اضافه می شه و می تونه کار رو با یه دکمه حذف کنه.
مسلمایه ارتباط دو طرفه بین آیتم های مدل و ویو نیاز هست که حتی اگه طرف کار رو در زمان درگ کرد، بتونه رو مدل تاثیر بزاره و زمان شروع و ... رو تغییر بده.
بهترین نوع ارتباط دو طرفه بین کیو ام ال و سی پلاس تو این حالت چجوریه و چکار باید بکنم.
من ایده کاربردی برا استفاده از qproperty و ... می خوام.
برا توضیح بهتر می خوام n تا آیتم رو بسازم که به محض ساختشون، یه شی از نوع کلاس مدلم در C++‎‎‎‎‎‎‎‎‎‎ بوجود بیاد و یه شی از نوع مثلا Rectangle در QML که ویو ام هست.
حتی یه لینک هم می تونه کمک کنه...
رفرنس های زیادی رو گشتم که همشون در مورد صدا زدن توابع از داخل همدیگر و ... توضیح داده ولی همچین چیزی رو نگفته...(ارتباط بین n شی موازی که به صورت داینامیک ساخته می شند که یه قسمتی در C++‎‎‎‎‎ هست و یه قسمتی در QML )

برای اینکار من یه اپی ساخته بودم در iOS و Android که مربوط بود به لیستی از رخداد های مرتبط با استارت آپ ها دقیقا همین چیزی بود که شما گفتید یعنی لیستی از آیتم ها به صورت آرایه و نمایش در UI.
کلاستون رو در ++C تعریف کنید و توابع مرتبط با اون رو و در نهایت خروجی رو به صورت لیست شده بفرستید به UI در QML که البته باید رجیستر شده باشه.

در بخش QML با دریافت تابع توسط پراپرتی model در ListView که شامل یک Component کامل ترکیبی از کنترل هایی که دوست دارید باشه درست کنید و ست کنید مثلا یک آیتم بسازید و مقادیر رو بهش ارجاع بدید.
در مورد Repeter هم مطالعه کنید به طور کلی خاصیت تکرار و قابلیت دریافت آیتم ها و تخصیص مقادیر در این مورد خیلی عالی هستش‌: http://doc.qt.io/qt-5/qml-qtquick-repeater.html
و این مثال رو هم در رابطه با نحوه لیست سازی در ListView رو ببینید: http://doc.qt.io/qt-5/qml-qtquick-listview.html

++Hadi++
دوشنبه 24 اسفند 1394, 04:57 صبح
مرسی
تو خونه بررسی می کنم و اگر اکی بود سعی می کنم یه سمپل درست کنم و آپش کنم تا مورد استفاده قرار بگیره... استاد عزیز بینهایت ممنون...

کامبیز اسدزاده
دوشنبه 24 اسفند 1394, 05:56 صبح
مرسی
تو خونه بررسی می کنم و اگر اکی بود سعی می کنم یه سمپل درست کنم و آپش کنم تا مورد استفاده قرار بگیره... استاد عزیز بینهایت ممنون...

خواهش میکنم، موفق باشید.