2013-06-10 8 views
7

को बढ़ावा नहीं दे सकता है कुछ ऐसा है जो मुझे Qt Designer के बारे में नहीं समझा जाता है। मैं थोड़ी देर के लिए इसके साथ काम कर रहा हूं, और फिर भी मैं हमेशा .ui फ़ाइलों को मैन्युअल रूप से संपादित करना समाप्त करता हूं।क्यूटी डिजाइनर QMainWindow

यह में देखा जा सकता है क्यूटी, बहुत पहली बात करते हैं जब आपके द्वारा बनाए गए एक जीयूआई QMainWindow उपवर्ग के लिए है में से एक पर हर एक ट्यूटोरियल - क्रम को पकड़ने और फिर से परिभाषित closeEvent() समारोह, उदाहरण के लिए करने के लिए।

हालांकि, क्यूटी डिजाइनर में QMainWindow उपclass ("प्रचार") संभव नहीं है - आप इसे कई अन्य वर्गों के साथ कर सकते हैं, लेकिन यह नहीं।

<class>MainWindow</class> 
    <widget class="QMainWindow" name="MainWindow"> 

द्वारा:

< widget class="MyMainWindow" name="MainWindow"> 

तो मेरी कोड को ठीक से मेरी कोड में QMainWindow उपवर्ग सकते हैं कि:

class MyMainWindow(QMainWindow, object): 
    ''' I can redefine closeEvent here! ''' 

क्या मैं आमतौर पर करते हैं .ui फ़ाइल और परिवर्तन को संपादित है

जाहिर है, यह अजीब है - और शायद मुझे डिजाइनर के साथ ऐसा करने के सही तरीके से कुछ याद आती है। लेकिन मुझे कोई स्पष्टीकरण नहीं मिल रहा है।

डिज़ाइनर में QMainWindow को उपclass क्यों संभव है, या इसकी आवश्यकता से बचने के लिए मेरे एप्लिकेशन को अलग-अलग कैसे व्यवस्थित करना संभव नहीं है?

धन्यवाद

उत्तर

4

आप आम तौर पर यूआई पेड़ की जड़ तत्व को बढ़ावा देने की जरूरत नहीं है। यदि आप UI फ़ाइल का उपयोग करके अपनी कक्षा को सही तरीके से प्रारंभ करते हैं, तो आप इसके बिना closeEvent को फिर से परिभाषित कर सकते हैं। This answer दिखाता है कि इसे ठीक से कैसे करें।

+0

इस उत्तर को इंगित करने के लिए धन्यवाद। लेकिन यह क्या दिखाता है कि किसी के पास एक ही समस्या थी और इसके आसपास काम करने के लिए एक हैक बनाया। अब यह मेरे लिए इतना स्पष्ट नहीं है कि यह एक पासाइड बग है। क्यूटी/सी ++ या पीईक्यूटी का उपयोग करते समय, यूआई फ़ाइल टॉप-स्तरीय क्लास के उदाहरण के भीतर कॉल लोड() को कॉल करना सीधे लोड किए गए विजेट को वर्तमान उदाहरण में मानचित्र करता है? यह निश्चित रूप से QUiLoader दस्तावेज़ीकरण पर इस तरह समझाया नहीं गया है। अभी भी परेशान –

2

मुझे पता है कि यह पुराना है। मैं किसी भी तरह से एक ही समस्या में भाग गया। मैं एक उप खिड़की में डॉकिंग सुविधाओं का उपयोग करना चाहता हूँ। जब मैंने QMinWindow को बढ़ावा देने की कोशिश की, तो मुझे इसे सूची में नहीं देखा गया। तब मैंने ड्रॉप डाउन सूची में QWidget का उपयोग करने का प्रयास किया, यह जादुई रूप से चला गया।

बस मेरा अनुभव।

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