QMainWindow, QWidget और QDialog में क्या अंतर है?


जवाबों:


130

A QWidget, Qt में सभी ड्रा करने योग्य वर्गों के लिए आधार वर्ग है। किसी भी QWidgetअभिभावक वर्ग को खिड़की के रूप में तब दिखाया जा सकता है जब उसे कोई अभिभावक न हो।

A QDialogपर आधारित है QWidget, लेकिन इसे एक विंडो के रूप में दिखाया गया है। यह हमेशा एक विंडो में दिखाई देगा, और इसमें संवादों (स्वीकार, अस्वीकार आदि) पर सामान्य बटन के साथ अच्छी तरह से काम करने के लिए कार्य हैं।

QMainWindowएक मुख्य खिड़की के लिए आम जरूरतों के आसपास बनाया गया है। इसमें मेन्यू बार, स्टेटस बार, टूलबार और अन्य विजेट्स के लिए पूर्वनिर्धारित स्थान हैं। इसमें बटन की तरह कोई अंतर्निहित भत्ता QDialogनहीं है।


1
मैंने इस प्रश्न की खोज की, लेकिन वास्तव में वह उत्तर नहीं है जिसकी मुझे प्रतीक्षा थी। QMainWindow का उपयोग करके QtDesigner में आपको एक मेनू बार और एक स्टेटस बार देता है। जब आप स्वयं कोड लिखते हैं और QMainWindow का उपयोग करते हैं तो आपके पास यह चीजें नहीं हैं। या आपका यह कहना कि आप window.addToolBar ("टूलबार") जैसा कुछ कर सकते हैं; और इसे बिना किसी अन्य सिरदर्द के पूर्वनिर्धारित स्थान पर रखा जाएगा?
लिलियन ए। मोरारु

1
@MoraruLilian: मैं वास्तव में QMainWindow का उपयोग नहीं करता, इसलिए मैं विवरण नहीं जानता। जैसा कि मैंने अपने जवाब में कहा था, मुझे पता है कि यह उनके लिए जगह है, इसलिए कोड में ऐसा करना आपके राज्य के रूप में सरल हो सकता है।
कालेब हुइत -

8
@ कालेब_हिट यह वही करता है जो मैं कह रहा हूं। मैं चाहता था कि अगर आप कहना चाह रहे हैं तो मैं स्पष्ट कर दूं। वैसे भी, मैं QMainWindow के बजाय हमेशा QWidget का उपयोग करने की सलाह दूंगा। आप समस्याओं में पड़ सकते हैं, उदाहरण के लिए एक और लेआउट सेट करने के साथ। यदि आप QMainWindow में एक नया लेआउट सेट करना चाहते हैं, तो आपको एक QWidget बनाना होगा और इसे QMainWin के लिए एक केंद्रीय विजेट के रूप में सेट करना होगा और बस फिर QWidget में आप (QLayout2) सेट कर सकते हैं। जबकि आप QWidget का उपयोग करके अतिरिक्त सिरदर्द से बच सकते हैं। ज़रूर, QMainWindow टूलबार और स्टेटसबार का वह आसान सेटअप प्रदान करता है, लेकिन आप अपने आप को QWidget में कर सकते हैं ...
Lilian A. Moraru

2
एक कारण जिसे हम QMainWindowसिर्फ बेस क्लास के बजाय उपयोग करना चाहते हैं, QWidgetवह है QMainWindowजिसका QDockWidgetसमर्थन है जबकि QWidgetअकेले नहीं है
कॉमरेडजोकूल

2
@ mLstudent33 दस्तावेज़ीकरण के लिए एक अच्छे प्रश्न की तरह लगता है, और अगर वह मदद नहीं करता है, तो यहां टिप्पणियों के बजाय एक प्राथमिक प्रश्न के रूप में पूछें। एक उदाहरण (Qt5 के लिए) doc.qt.io/qt-5/qtwidgets-mainwindows-application-example.html
Caleb Huitt - cjhuitt

4

QWidget : QtWidgets मॉड्यूल में अन्य सभी GUI तत्वों के लिए एक बेस क्लास है। यह अपने आप से एक खिड़की का गठन कर सकता है, या एक QLayout का हिस्सा हो सकता है, या सिर्फ माता-पिता-बच्चे पदानुक्रम का सदस्य हो सकता है।

QDialog : आमतौर पर उपयोग किया जाता है - आश्चर्य! - उपयोगकर्ता इनपुट की आवश्यकता होने पर एक अस्थायी संवाद प्रदर्शित करें।

QMainWindow : एक सुविधा वर्ग है जिसे आपके एप्लिकेशन की मुख्य विंडो के रूप में उपयोग किया जा सकता है। इसमें कुछ अच्छी विशेषताएं अंतर्निहित हैं: एक स्टेटस बार, टूल बार और एक मेनू बार

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.