2012-05-18 8 views
8

状況:私は(ケース親ウィジェットで、この問題には関係)このように構成されたQt4をアプリケーションに取り組んでいます
QWidget.setContentsMargins()は効果がないようです:なぜそうですか?

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

は目的:
私は余白がないようにしたいですサブQFramesとそのQLabelとの間、およびQLabelと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

関連する問題