Qt 5.11 - Overview of Qt's Undo Framework

Qt के पूर्ववत ढांचे का अवलोकन




qt

Qt के पूर्ववत ढांचे का अवलोकन

परिचय

अनुप्रयोगों में पूर्ववत / पुन: कार्यक्षमता को लागू करने के लिए Qt का Undo फ्रेमवर्क कमांड पैटर्न का कार्यान्वयन है।

कमांड पैटर्न इस विचार पर आधारित है कि किसी एप्लिकेशन में सभी एडिटिंग कमांड ऑब्जेक्ट्स के इंस्टेंस बनाकर किए जाते हैं। कमांड ऑब्जेक्ट दस्तावेज़ में परिवर्तन लागू करते हैं और एक कमांड स्टैक पर संग्रहीत होते हैं। इसके अलावा, प्रत्येक कमांड जानता है कि दस्तावेज़ को अपने पिछले राज्य में वापस लाने के लिए इसके परिवर्तनों को पूर्ववत कैसे करें। जब तक आवेदन केवल दस्तावेज़ की स्थिति को बदलने के लिए कमांड ऑब्जेक्ट का उपयोग करता है, तब तक प्रत्येक क्रम पर स्टैक को नीचे की ओर और पूर्ववत कॉल करके कमांड के अनुक्रम को पूर्ववत करना संभव है। स्टैक को ऊपर की ओर करके और प्रत्येक कमांड पर रीडो को कॉल करके कमांड के अनुक्रम को फिर से करना भी संभव है।

कक्षाएं

चौखटे में चार वर्ग होते हैं:

  • QUndoCommand पूर्ववत स्टैक पर संग्रहीत सभी आदेशों का आधार वर्ग है। यह दस्तावेज़ में एक भी परिवर्तन को लागू (फिर से कर सकता है) या पूर्ववत कर सकता है।
  • QUndoStack , QUndoCommand वस्तुओं की एक सूची है। इसमें दस्तावेज़ पर निष्पादित सभी कमांड शामिल हैं और दस्तावेज़ की स्थिति को पीछे की ओर या पूर्ववत करके या उन्हें फिर से परिभाषित करके रोल कर सकते हैं।
  • QUndoGroup पूर्ववत ढेर का एक समूह है। यह तब उपयोगी होता है जब किसी एप्लिकेशन में एक से अधिक पूर्ववत किए गए स्टैक होते हैं, आमतौर पर प्रत्येक खुले दस्तावेज़ के लिए। समूह में सभी ढेरों के लिए QUndoGroup समूह पूर्ववत / फिर से स्लॉट की एक जोड़ी प्रदान करता है। यह सक्रिय स्टैक के लिए पूर्ववत और फिर से अनुरोध करता है, जो उस दस्तावेज़ से जुड़ा स्टैक है जिसे वर्तमान में उपयोगकर्ता द्वारा संपादित किया जा रहा है।
  • QUndoView एक विजेट है जो पूर्ववत स्टैक की सामग्री को दिखाता है। दृश्य में एक कमांड पर क्लिक करने से दस्तावेज़ की स्थिति पीछे की ओर या उस कमांड के लिए आगे बढ़ जाती है।

अवधारणाओं

निम्नलिखित अवधारणाओं को फ्रेमवर्क द्वारा समर्थित किया गया है:

  • स्वच्छ स्थिति: दस्तावेज़ में प्रवेश करते समय संकेत देने के लिए उपयोग किया जाता है और डिस्क में सहेजे गए राज्य को छोड़ देता है। यह आमतौर पर सेव एक्शन को डिसेबल या इनेबल करने के लिए और डॉक्यूमेंट के टाइटल बार को अपडेट करने के लिए उपयोग किया जाता है।
  • कमांड कम्प्रेशन: एक कमांड में कमांड्स के सीक्वेंस को सेक करने के लिए उपयोग किया जाता है। उदाहरण के लिए: एक टेक्स्ट एडिटर में, डॉक्यूमेंट में अलग-अलग कैरेक्टर डालने वाले कमांड्स को सिंगल कमांड में कंप्रेस्ड किया जा सकता है, जिसमें टेक्स्ट के पूरे सेक्शन शामिल होते हैं। ये बड़े बदलाव उपयोगकर्ता के लिए पूर्ववत और फिर से करने के लिए अधिक सुविधाजनक हैं।
  • कमांड मैक्रोज़: कमांड का एक क्रम, जिसमें से सभी एक चरण में पूर्ववत या फिर से किए गए हैं। ये एक एप्लिकेशन लिखने के कार्य को सरल बनाते हैं, क्योंकि सरल कमांड के एक सेट को अधिक जटिल कमांड में बनाया जा सकता है। उदाहरण के लिए, एक कमांड जो दस्तावेज़ में चयनित वस्तुओं के एक सेट को स्थानांतरित करता है, कमांड के सेट को मिलाकर बनाया जा सकता है, जिनमें से प्रत्येक एक ऑब्जेक्ट को स्थानांतरित करता है।

QUndoStack सुविधाजनक पूर्ववत और फिर से तैयार QAction ऑब्जेक्ट्स प्रदान करता है QAction मेनू या टूलबार में डाला जा सकता है। इन क्रियाओं के पाठ गुण हमेशा यह दर्शाते हैं कि जब उन्हें ट्रिगर किया जाता है तो कौन सी कमांड पूर्ववत या फिर से की जाएगी। इसी तरह, QUndoGroup पूर्ववत और फिर से कार्रवाई करता है जो हमेशा सक्रिय स्टैक के पूर्ववत और फिर से कार्रवाई की तरह व्यवहार करता है।