2014-06-16 9 views
5

मेरे पास QMainWindow है और मैंने मुख्य विंडो में mdiArea डाला है।
आप पहले निम्न छवि देखना होगा:अंतरिक्ष (मार्जिन) को कैसे हटाएं QMainWindow और mdiArea के बीच?

आप ग्रे क्षेत्र के रूप में देखा mdiArea है और रिक्त स्थान (मार्जिन) कि मुख्य विंडो और mdiArea के बीच मैं क्या आप इसे निकालना चाहते हैं।
मैंने setContentsMargins फ़ंक्शन का उपयोग किया है, लेकिन कुछ भी नहीं करता है।

मैं इन रिक्त स्थानों को कैसे हटा सकता हूं?

मैं निम्नलिखित छवि की तरह बनना चाहता हूँ: enter image description here

उत्तर

9

QMainWindow एक केंद्रीय विजेट एक लेआउट गई है। QMainWindow पर आपके द्वारा उपयोग किए जाने वाले लेआउट का उपयोग इसके केंद्रीय विजेट पर किया जाना चाहिए। इसलिए आप

QWidget* QMainWindow::centralWidget() पहले

फोन ताकि आप केंद्रीय विजेट पहले प्राप्त कर सकते हैं और फिर

void QLayout::setContentsMargins(int left, int top, int right, int bottom)

का उपयोग अपने लेआउट समायोजित करने के लिए किया है। नीचे दिया गया चित्र क्यूटी के दस्तावेज से आता है।

enter image description here enter image description here

एक केंद्रीय विजेट के बिना एक मुख्य विंडो बनाना समर्थित नहीं है। आपके पास एक केंद्रीय विजेट होना चाहिए भले ही यह केवल प्लेसहोल्डर हो।

centralWidget()->layout()->setContentsMargins(0, 0, 0, 0); 
statusBar()->hide(); 
ui->mainToolBar->hide(); 

enter image description here

स्थिति पट्टी और उपकरण पट्टी क्रम में, छिपे हुए हैं:


उदाहरण के लिए, आप QMainWindow के निर्माता में निम्नलिखित हो सकता था जितना संभव हो उतना खाली स्थान को हटाने के लिए।

+0

मैंने इस कोड को मेनविंडो के निर्माता में लिखा है। लेकिन दुर्भाग्य से, अभी भी रिक्त स्थान को हटाना नहीं चाहता है। –

+0

@LionKing आपका क्या मतलब है "रिक्त स्थान को हटाना नहीं चाहता"? क्या आप वह नहीं चाहते हैं? – Tay2510

+0

@LionKing ठीक है मैंने अपनी पोस्ट संपादित की है, पहले केंद्रीय विजिट को कॉल करने और इसे लेआउट प्राप्त करने की आवश्यकता है। – Tay2510

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