2011-10-25 26 views
7

Tôi có một vấn đề khá lạ. Tôi có một số QWidget với QHBoxLayout trên đó. Bố cục chứa hai số QLabels. Tôi muốn đặt đường viền cho toàn bộ tiện ích này. Tôi đang sử dụng biểu định kiểu:Qt 4: Cách đặt đường viền ngoài cho QWidget sao cho các tiện ích bên trong của nó không bị ảnh hưởng?

"padding: 10px;" 
"border-style: solid;" 
"border-width: 3px;" 
"border-radius: 7px;" 

Nhưng đây là vấn đề: kiểu này được áp dụng cho cả QLabels và hoàn toàn phá vỡ bố cục. Tôi chỉ cần cửa sổ bên ngoài để có đường viền chứ không phải nhãn. Bất kỳ ý tưởng nào?

Cảm ơn trước!

Trả lời

7

Sử dụng

.QWidget 
{ 
    // your css rules 
} 

.QWidget sẽ áp dụng CSS chỉ đến các lớp học mà là CHÍNH XÁC QWidget và không kế thừa QWidget

Bạn cũng có thể sử dụng công cụ chọn đối tượng

#YourWidgetObjectName 
{ 
    // your css rules 
} 

Cả hai giải pháp sẽ không áp dụng quy tắc cho các tiện ích con khác (ngay cả những tiện ích bên trong)

+0

Tôi tin rằng nó phải là QWidget, không có dấu chấm. –

+5

QWidget không có dấu chấm sẽ cho biết tiện ích ale kế thừa QWidget. với dấu chấm nó chỉ bao gồm các cá thể của lớp QWidget. http://doc.qt.nokia.com/4.7/stylesheet-syntax.html#selector-types –

7

Trang tính theo phong cách sẽ hoạt động đệ quy. Nếu bạn áp dụng biểu định kiểu cho một Ứng dụng, nó sẽ được áp dụng cho tất cả các tiện ích bên trong nó. Vì vậy, bạn có thể phải xác định những gì bạn muốn áp dụng bảng định kiểu?

logic nên được một cái gì đó như thế này ..

QHBoxLayout#layoutbox { 
    background-color: red; 
    border-style: outset; 
    border-width: 2px; 
    border-radius: 10px; 
    border-color: beige; 
    font: bold 14px; 
    min-width: 10em; 
    padding: 6px; 
} 
+2

làm cách nào để đặt biểu định kiểu? Trong Qt4.8, lớp QHBoxLayout không có hàm gọi là 'setStyleSheet()'. Tôi có nên làm điều đó theo một cách khác, hay câu trả lời của bạn chỉ áp dụng cho Qt5? – Wim