2010-08-03 12 views
8

मैं क्यूटी का उपयोग कर रहा हूं, और मैं एक QWizard ऑब्जेक्ट का उपयोग करता हूं जिसमें कई पेज होते हैं। जब यह एक विशेष पृष्ठ की बात आती है, मैं पहली बार "अगला" बटन को छिपाने के लिए चाहते हैं, और उपयोगकर्ता के बाद यह पता चलता है कुछ करना (जैसे कि एक radiobutton पर क्लिक करने के रूप ...)क्यूवार्डर बटन को नियंत्रित करने के लिए कहां?

मैं कुछ अनुकूलित नियंत्रण करना चाहते हैं जब यह विशिष्ट पृष्ठ दिखाता है तो विज़ार्ड का। सवाल यह है कि, मुझे पता है कि बटन को कैसे छिपाना है, लेकिन मुझे नहीं पता कि मुझे किस फ़ंक्शन का उपयोग करना चाहिए। मैंने QWizardPage कन्स्ट्रक्टर, प्रारंभिक पृष्ठ फ़ंक्शन, "शो" फ़ंक्शन का प्रयास किया, लेकिन इन सभी फ़ंक्शन काम नहीं कर पाए।

यदि मैं विज़ार्ड पेज कन्स्ट्रक्टर में बटन नियंत्रण डालता हूं, तो प्रोग्राम क्रैश हो जाएगा क्योंकि विज़ार्ड ऑब्जेक्ट अभी तक नहीं है।

अगर मैं initializePage समारोह में रख, कुछ QWizard समारोह initializePage समारोह के बाद बटन रीसेट हो जाएगा, और सभी अनुकूलित सेटिंग चला गया होगा।

और शो समारोह ओवरराइट नहीं किया जा सकता है लगता है।

मैं सच में समझ नहीं है जो समारोह प्रयोग करने योग्य है। क्या एमएफसी में ऑनसेट एक्टिव या जावा में लोड जैसे कोई फ़ंक्शन है ?? जब कोई पृष्ठ दिखाया जा रहा है तो कौन सा कॉल किया जाएगा?

उत्तर

8

सबसे अच्छा समाधान शायद QWizardPage::registerField का उपयोग कर प्रदान किया गया है। यह आपको अनिवार्य फ़ील्ड/रेडियो बटन/आदि को परिभाषित करने की अनुमति देता है। और आपके विज़ार्ड में अगला और/या फिनिश बटन तभी सक्षम होते हैं जब सभी अनिवार्य फ़ील्ड भर जाते/चेक किए जाते हैं।

एक उदाहरण के लिए http://doc.trolltech.com/4.6/dialogs-licensewizard.html देखें जो इस कार्यक्षमता का उपयोग करता है।

संपादित करें: QWizard::button विज़ार्ड में बटन तक पहुंच प्रदान करता है। क्या आपने myWizard->button(QWizard::NextButton)->setEnabled(false) जैसी कुछ कोशिश की है?

+0

धन्यवाद, लेकिन मेरा प्रश्न थोड़ा अलग है। रजिस्टर फ़ील्ड का उपयोग करके, अगला और फिनिश बटन एक साथ तय किए जाते हैं। मैं यह तय करना चाहता हूं कि कोई पृष्ठ अंतिम पृष्ठ है या नहीं, दूसरे शब्दों में, मैं यह तय करना चाहता हूं कि विज़ार्ड को ईयरलर समाप्त करना चाहिए या नहीं। मैं जानता हूँ कि मैं setFinalPage उपयोग कर सकते हैं, हालांकि, अंतिम पृष्ठ पर एक पेज सेट करने के बाद, समाप्त करें बटन दिखाई देता है, यह अच्छी बात है, लेकिन अगले बटन अभी भी वहाँ है, कि क्या मैं से बचने के लिए चाहते हैं। मैं इसे अक्षम करना या इसे छिपाना चाहता हूं। पूर्ण है या रजिस्टर फ़ील्ड अगला और फिनिश बटन को एक साथ नियंत्रित करता है, और मैं उन्हें अलग करना चाहता हूं। –

+0

@ क्लेयर हुआंग: मेरे उत्तर में एक नया विचार जोड़ा गया; मुझे उम्मीद है यह मदद करेगा। –

+0

हाय ग्रेग: क्षमा करें कि मैंने आपकी टिप्पणी नहीं देखी और आपकी मदद के लिए धन्यवाद। हां, मैं बटन को प्रारंभिक चरण में सेट करने का प्रयास करता हूं, हालांकि, ऐसा लगता है कि प्रारंभिक पृष्ठ() के बाद बटन रीसेट कर दिया गया है। मुझे बटन सेट करने के लिए सही फ़ंक्शन नहीं मिल रहा है। –

4

अगले बटन आप QWizardPage उपवर्ग और isComplete() reimplement कर सकते हैं निष्क्रिय करने के लिए। जब यह सच हो जाता है तो QWizard बटन सक्षम करेगा। जब आप isComplete() की स्थिति बदलते हैं तो सबक्लास को 'पूर्ण चेंज()' सिग्नल उत्सर्जित करना होता है। QWizardPage के लिए प्रलेखन बताता है कि इसे कैसे करें।

शायद आप भी

parent->button(QWizard::NextButton)->setVisible(false)

का उपयोग बटन को छिपाने के लिए कर सकता है।

+0

आपके उत्तर के लिए धन्यवाद। मैं अपने जादूगर से दबाए गए कैच सिग्नल फिनिश बटन को कैसे हटा सकता हूं। – Tariq

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

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