نموذج - عرض - وحدة تحكم في QT
-
05-07-2019 - |
سؤال
أنا أفهم أكثر أو أقل كيف يعمل MPV. لكني لا أحصل على ما الفصول الدراسية:
QAbstractItemModel
QAbstractItemView
QAbstractItemDelegate
/QItemDelegate
هل يمكن أن تفعل لي؟
إذا كان ذلك مناسبًا ، فأنا أستخدمQGraphicsScene
/ QGraphicsView
مع بعض العناصر (التمثيل المرئي للوحة اللعبة) التي يمكن للمستخدم التفاعل معها بينما يتم تغليف منطق التفاعل (قواعد اللعبة) في فئة أخرى.
المحلول
AbstractItemModel QabstractItemView QabStractItemDelegate
هي من "وضع/عرض إطار عمل"
هذا إطار قوي للغاية لجزء البيانات من التطبيق الخاص بك ، هنا هو عرض الإطار.
QabstractItemModel
هو الفئة الأساسية ل نموذج MVC. لديه واجهة عالمية للوصول إلى البيانات وتغييرها ويعتني بالجزء الذي يمكن ملاحظته.
QabstractItemView
هو الفئة الأساسية ل عرض MVC. لديه واجهة aglobal لجزء العرض/التحديدات ويعتني بجزء المراقب. لا داعي للقلق بشأن نمط المراقب ، فإن الإطار يفعل ذلك لك.
QabstractItemDelegate
هو الفئة الأساسية ل وحدة تحكم MVC.
هو نمط الاستراتيجية للطلاء ، وتحرير العناصر ، ...
QGraphicsscene / QGraphicsView
هي من "إطار عرض الرسومات" وهو مستقلة عن إطار النموذج/العرض.
هذا أيضًا إطار قوي للغاية لجزء الرسومات.
المشهد
يوفر QGraphicsScene مشهد عرض الرسومات. المشهد لديه المسؤوليات التالية:
توفير واجهة سريعة لإدارة عدد كبير من العناصر التي تنشر الأحداث في كل عنصر إدارة عنصر العنصر ، مثل الاختيار والتعامل مع التركيز لتوفير وظائف عرض غير محولة ؛ أساسا للطباعة
المنظر
يوفر QGraphicsView أداة العرض ، والتي تصور محتويات المشهد. يمكنك إرفاق عدة طرق عرض إلى نفس المشهد ، لتوفير العديد من منصات المشاهدة في نفس مجموعة البيانات
إذا كنت تريد أن يكون نموذجًا مرئيًا في QGraphicsView أكثر مما سيتعين عليك كتابة عرضك الخاص استنادًا إلى QabstractItemView.
خذ QGraphicsView كعرض عرض منفذ QAbstractScrollArea::setViewport(QWidget * widget))
ثم يمكنك
- يضيف
QAbstractItemView::rowsInserted
, - إزالة
QAbstractItemView::rowsAboutToBeRemoved
- و يتغيرون
QAbstractItemView::dataChanged
العناصر في المشهد. لا تنس أن تعتني بإعادة ضبط أحداث تغيير التصميم.