Qt

2013-03-03 10 views
5

में पूर्ववत रेडो फ्रेमवर्क को समझने में असमर्थ मैं अपने आवेदन विकास & के लिए क्यूटी का उपयोग करना सीख रहा हूं, मैं अपने आवेदन को विकसित करने में काफी सफल हूं। अब मैं अपने आवेदन के लिए पूर्ववत फिर से कार्यशीलता को कार्यान्वित करना चाहता हूं। इस विषय के लिए doc कम जानकारी है। मैंने एसडीके में 2 उदाहरणों से भी समझने की कोशिश की है। लेकिन मुझे यह समझने में मुश्किल हो रही है कि यह कैसे काम करता है। क्या कोई मुझे समझाने की परेशानी ले सकता है कि इसे कैसे कार्यान्वित किया जाए? मेरे आवेदन में विभिन्न राज्य हैं जिनके लिए मैं यह कार्यक्षमता प्रदान करना चाहता हूं। तो क्या व्याख्या सामान्य दृष्टिकोण से हो सकती है? यदि इंटरनेट पर पहले से ही लेख समझा रहे हैं तो कृपया मुझे उनके बारे में सूचित करें। यह बहुत मददगार होगा। धन्यवाद।Qt

+0

आप क्या समझ नहीं सकते? विशिष्ट वर्ग? अवलोकन ? – Synxis

+0

मैं 4 वर्गों को समझ सकता हूं और उनका उद्देश्य क्या है, लेकिन मुझे नहीं पता कि क्वान्डो कॉमांड कहें, उनका उपयोग कैसे करें। –

उत्तर

8

2 कोर कक्षाएं हैं: QUndoCommand और QUndoStack;

  1. QUNDoCommand आपके कमांड क्लास का बेस क्लास है। आपको पूर्ववत() और फिर से() खुद को लागू करना होगा।
  2. QUndoStack मूल रूप से, QUndoCommand वस्तुओं की एक कंटेनर है QAction, क्वेरी पूर्ववत बनाने की तरह अतिरिक्त तरीकों के साथ/फिर वर्तमान QUndoCommand का पाठ (सरल कार्यक्षमताओं जो आप अपने आप को आसानी से लागू किया जा सकता है)

आपको क्या करने की जरूरत है:

  1. अपने आदेशों को लागू करें। आपको यह तय करने की ज़रूरत है कि अपनी जरूरत के अनुसार खुद को फिर से कैसे करें/पूर्ववत करें। कक्षा AppendText एक अच्छा उदाहरण है: http://qt-project.org/doc/qt-5.0/qtwidgets/qundocommand.html
  2. प्रत्येक दस्तावेज़ के लिए एक QUNDoStack उदाहरण रखें (या एक उदाहरण यदि एप्लिकेशन में केवल एक दस्तावेज़ है)।
  3. कहें कि आपके पास "AppendText" कमांड क्लास है, और UI में "संलग्न करें" बटन है। यदि "संलग्न करें" बटन क्लिक किया गया है, तो आपको एक AppendText कमांड उदाहरण बनाने की आवश्यकता है, और QUNDoStack :: push (appendCmd) पर कॉल करें। QUndoStack :: पुश() AppendText :: redo() पहले कॉल करेगा, और फिर इसे पूर्ववत करने के लिए कंटेनर में रखेगा।

यही है।

+1

हाँ मैं कुछ बिट्स और टुकड़ों को समझ गया लेकिन मुझे समझ में नहीं आ रहा है कि मैं क्यूटी अंडो रेडो फ्रेमवर्क का उपयोग क्यों करूं? क्या यह मेरी खुद की कक्षा को लागू करने के लिए और अधिक सुविधाजनक नहीं होगा, जो सत्र के सभी इतिहास और फिर राज्य के अनुसार पूर्ववत/फिर से करें? मैं पूछना चाहता हूं कि मैं अपने आवेदन के लिए अनुकूलित अपने स्वयं के ढांचे की तुलना में क्यूटी के इनबिल्ट फ्रेमवर्क से क्या प्राप्त करता हूं? –

+1

सरल ऐप्स के लिए, क्यूटी का पूर्ववत ढांचा बहुत समय बचा सकता है। लेकिन अगर आपके मामले के लिए बेहतर समाधान है, तो बस इसके लिए जाओ। क्यूटी पूर्ववत ढांचे में रहस्यमय नहीं है जो आप इसका उपयोग करते हैं। मदद के लिए – Chen

+0

ठीक है धन्यवाद। –

संबंधित मुद्दे

 संबंधित मुद्दे