2012-05-18 15 views
8

स्थिति:
मैं एक क्यूटी 4 आवेदन इस तरह से निर्माण पर काम कर रहा हूँ (मामले जनक विजेट में इस मुद्दे में कोई फर्क):QWidget.setContentsMargins() अप्रभावी प्रतीत होता है: ऐसा क्यों?

QApplication 
    |_ QMainwindow 
     |_ QScrollArea (central widget) 
       |_ QFrame (child of scroll area) 
        |_ QFrame 
        |  |_ QLabel 
        |   |_ QPixmap 
        |_ QFrame 
        |  |_ QLabel 
        |   |_ QPixmap 
        |_ QFrame 
          |_ ect... 

उद्देश्य:
मैं वहाँ चाहते हैं कोई मार्जिन होने के लिए उप-QFrames और उनके QLabels के बीच और QLabels और उनके QPixmap के बीच समान रूप से।

विधि:
मैं QFrame.setContentsMargins साथ उप QFrame के मार्जिन को कम करने का अनुरोध किया है (0, 0, 0, 0) और उसके लेआउट के QBoxLayout.setSpacing साथ (0)। QLabel और उसके QPixmap के बीच शून्य-मार्जिन स्वाभाविक रूप से प्रतीत होता है।

समस्या:
यह सब के बावजूद, QFrames भीतर मार्जिन दिखाने में जारी रहती है: एक स्थिति है जिसमें मैं विभिन्न विजेट के लिए एक स्टाइल शीट लगाने से परीक्षण करने के लिए सक्षम है।

मैं क्या कर सकता हूं?

उत्तर

10

Answer provided on Qt Forum:

मार्जिन 'सामग्री विजेट पर दोनों सेट किया जाना चाहिए और उसके लेआउट। इसलिए:

QWidget *w = new QWidget(); 
w->setContentsMargins(0, 0, 0, 0); 
w->layout()->setContentsMargins(0, 0, 0, 0); 
+3

वास्तव में, setContentsMargins लेआउट पर निष्पादित किया जाना है, और अगर यह काम नहीं करता है, तो एक वैकल्पिक पैरामीटर 0 के लिए रिक्ति स्थापित कर रही है -> setSpacing (0) लेआउट के लिए। – darkgaze

+0

setContentMargins मेरे लिए काम नहीं करता है। कोई मदद? – abhiarora

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