2012-05-18 35 views
8

trạng:
tôi đang làm việc trên một ứng dụng Qt4 xây dựng theo cách này (trong widget mẹ trường hợp quan trọng trong vấn đề này):QWidget.setContentsMargins() có vẻ không hiệu quả: tại sao vậy?

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

Mục tiêu:
tôi muốn có là không có lợi nhuận giữa các QFrames phụ và các QLabels của họ và bằng nhau giữa QLabels và QPixmap của chúng.

Phương pháp:
tôi đã yêu cầu giảm lợi nhuận tiểu QFrame với QFrame.setContentsMargins (0, 0, 0, 0) và với QBoxLayout.setSpacing bố trí của nó (0). Zero-margin giữa QLabel và QPixmap của nó dường như xảy ra một cách tự nhiên.

Vấn đề:
Mặc dù tất cả điều này, lợi nhuận trong vòng QFrames tồn tại hiển thị: một tình huống mà tôi đã có thể kiểm tra bằng cách áp dụng một style sheet để các vật dụng khác nhau.

Tôi có thể làm gì?

Trả lời

10

Answer provided on Qt Forum: Nội dung

Các lề nên được đặt cả vào widget và bố trí của nó. Do đó:

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

Trong thực tế, setContentsMargins phải được thực hiện trên LAYOUT, và nếu nó không hoạt động, sau đó một tham số tùy chọn được thiết lập khoảng cách tỉ số 0 -> setSpacing (0) để bố trí. – darkgaze

+0

setContentMargins không hoạt động đối với tôi. Bất kỳ giúp đỡ? – abhiarora

Các vấn đề liên quan