विंडो आकार के साथ Qt विजेट कैसे विकसित करें?


89

मैं एक छोटा-सा काम करना चाहता हूं QFormLayoutजो इसके मूल विजेट को भरने के लिए बढ़ता है।

मैंने Qt Designer में टेम्पलेट का उपयोग करके एक नई .ui फ़ाइल बनाई QWidget। मैंने QFormLayoutउस 'विंडो' के अंदर एक पुट डाला , फिर उसके अंदर कुछ नियंत्रण रखा QFormLayout

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

मैं इसे कैसे पूरा कर सकता हूं?

जवाबों:


130

डिज़ाइनर में, CentralWidget को सक्रिय करें और एक लेआउट असाइन करें, जैसे क्षैतिज या ऊर्ध्वाधर लेआउट। तब आपका QFormLayout अपने आप आकार बदल जाएगा।

डिजाइनर की छवि

हमेशा सुनिश्चित करें, कि सभी विजेट में एक लेआउट है! अन्यथा, स्वचालित आकार बदलना उस विजेट के साथ टूट जाएगा!

यह सभी देखें

नियंत्रण बहुत बड़े होने पर जोर देते हैं, और QtDesigner में आकार नहीं बदलेंगे


13
QtDesigner कई बार थोड़ा भ्रामक हो सकता है।
बस्तिबे

30
ओह, इसके लिए धन्यवाद! :-) मैं आधे घंटे के लिए QtDesigner (अच्छी तरह से, QtCreator, एक ही चीज़ हालांकि वहाँ) को घूर रहा हूं और यह पता नहीं लगा सका कि मेरा केंद्रीय विजेट अधिकतम क्यों नहीं बदलता है - जब तक कि मुझे यह पता नहीं चला कि मैं छोटा सा आइकन हूं आपके उत्तर में चक्कर लगा चुके हैं, उस पर लाल 'अक्षम' निशान है। निर्माता टूलबार में 'ले आउट आउट' बटन पर एक क्लिक करें और समस्या ठीक हो गई है। पहली बार मैंने नोटिस किया कि टूलबार BTW, अनदेखी करना आसान है ...
ssc

8
जेन्स के उत्तर पर टिप्पणी करने के लिए: मैक पर, शीर्ष-स्तरीय विजेट पर क्लिक करें (जरूरी नहीं कि "सेंट्रलवाइडगेट" नाम दिया जाए) फिर मेनू बार में "फॉर्म" पर क्लिक करें और लेआउट में से एक का चयन करें।
हरसूरत

2
अगर किसी को अभी भी आश्चर्य हो रहा है, तो यह शीर्ष स्तर "सेंट्रलवेटगेट" (जिस पर थोड़ा लाल निशान है) पर क्लिक करके और फिर टूल्स> फॉर्म एडिटर> ले आउट पर जाकर क्यूटी 5.8 / क्यूटी क्रिएटर 4.2.1 में विंडोज पर किया जाता है। ऊर्ध्वाधर (या क्षैतिज रूप से)।
लियोआर

41

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


4
यह पागलपन है। केंद्रीय विजेट में लेआउट असाइन करना Qt क्रिएटर में सबसे तुच्छ ऑपरेशन होना चाहिए। इसके बजाय, ऐसा करने के लिए जेन्स के समान समान समाधान ( उस सटीक क्रम में ) के साथ इस अत्यधिक अनपेक्षित समाधान के संयोजन की आवश्यकता होती है । जबकि क्यूटी क्रिएटर द्वारा प्रदान किया गया स्वचालन अभी भी दोहराव वाले बॉयलरप्लेट को एक बड़े अंतर से बाहर निकालता है, इसके भयावह उपयोगकर्ता अनुभव (यूएक्स) के आसपास हैकिंग ने मुझे एक नई आंख-चिकोटी दी है।
सेसिल करी

@Cecil करी उस समाधान के बाद भी मुझे यह महसूस करने में 20 मिनट का समय लगा कि मुझे क्या करना चाहिए ... क्योंकि केवल मामले में CentralWidget जब लेआउट जोड़ने के लिए कोई संदर्भ मेनू विकल्प नहीं होता है ... टूलबार में केवल एक माइक्रोस्क्रोपिक बटन जो लगभग एक जैसे दिखता है
स्विफ्ट - शुक्रवार

3
इस समाधान के बाद से यह टिप्पणी लिखना, मुझे विकल्प खोजने में परेशानी हुई। आपको CentralWidget का चयन करना होगा, फिर अपने ऐप के कुछ खाली स्थान पर राइट-क्लिक करें, खुलने वाले संदर्भ-मेनू में 'लेआउट' पर जाएं और फिर इच्छित लेआउट का चयन करें। यह मेरे लिए काम किया, कम से कम (क्यूटी 5, क्यूटी डिजाइनर 5.11.1 का उपयोग करके)।
कुशी

11

स्वीकृत उत्तर (इसकी छवि) गलत है, कम से कम अब क्यूटी 5 में। इसके बजाय आपको रूट ऑब्जेक्ट / विजेट में एक लेआउट असाइन करना चाहिए (पूर्वोक्त छवि की ओर इशारा करते हुए, यह MainWindowइसके बजाय होना चाहिए centralWidget)। यह भी ध्यान दें कि आपके पास QObjectकाम करने के लिए इसके नीचे कम से कम एक निर्मित होना चाहिए । ऐसा करें और आपका ui विंडो आकार बदलने के लिए उत्तरदायी हो जाएगा।


0

आपको डिफ़ॉल्ट लेआउट प्रकार के शीर्ष स्तर QWidget ऑब्जेक्ट को ब्रेक लेआउट प्रकार से अन्य लेआउट प्रकार (ऊर्ध्वाधर लेआउट, क्षैतिज लेआउट, ग्रिड लेआउट, फॉर्म लेआउट) में बदलने की आवश्यकता है। उदाहरण के लिए: यहाँ छवि विवरण दर्ज करें

कुछ इस तरह से:

यहाँ छवि विवरण दर्ज करें

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