2012-07-16 37 views
5

Tôi đang sử dụng Trình tạo Qt. Trong GUI của tôi, tôi sử dụng một widget tab. Tiện ích này phải có màu nền xám giống như cửa sổ chính (ảnh A). Tôi thực hiện điều này bằng cách chỉnh sửa Style Sheet trong Qt Designer với:Làm cách nào để đặt màu nền của tiện ích tab trong Trình tạo Qt?

enter code herebackground-colour: rgb(240, 240, 240); 

Nhưng bây giờ tôi có hai vấn đề mới mà tôi không thể giải quyết:

  • Các nút (-> Gửi) không được làm tròn nữa không.
  • Màu nền của hộp chỉnh sửa cũng đã thay đổi thành màu xám.

Befor Tôi đã thay đổi style sheet GUI trông giống như trong Hình B.

Tôi cũng đã cố gắng

QPalette pal = m_pUi->tabWidget->palette(); 
pal.setColor(m_pUi->tabWidget->backgroundRole(), Qt::blue); 
m_pUi->tabWidget->setPalette(pal); 

nhưng điều này chỉ thay đổi màu sắc đằng sau các tab, không phải toàn bộ màu sắc của toàn bộ "tab-cửa sổ-bề mặt".

Tôi có phải thực hiện các mô tả kiểu bổ sung hoặc có giải pháp đơn giản hơn không?

Picture A - with Style Sheet

Hình A - với Style Sheet

Picture B - without Style Sheet

Hình B - mà không Style Sheet

+0

Tôi đã tìm ra rằng dưới nền XP luôn có màu xám nhưng dưới Windows 7, nó có màu trắng. –

+0

Bạn đã thử làm rối màu nút trên bảng màu chưa? Nó có thể là thanh tab sử dụng nó cho các tab của nó. Trên hình ảnh không có bảng định kiểu, các tab và nút trông rất giống nhau. –

Trả lời

0

Các "thứ" mà bạn muốn truy cập được gọi là QTabBars. Giữ ý nghĩ bạn có thể viết một stylesheet như thế này:

QTabBar::tab 
{ 
    background: #48555E; 
    color: white; 
    border-color: #48555E; 
} 

QTabBar::tab:selected, 
QTabBar::tab:hover 
{ 
    border-top-color: #1D2A32; 
    border-color: #40494E; 
    color: black; 
    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #C1D8E8, stop: 1 #F0F5F8); 
} 

Ngoài ra bạn có thể tìm thấy this questionofficial documentation này sâu sắc.

4

tôi đã cùng một vấn đề và tôi phát hiện ra rằng bạn cần phải thiết lập thuộc tính này cho mỗi một trong các tab của bạn:

ui->tab->setAutoFillBackground(true); 

Tôi không chắc chắn, nhưng tôi nghĩ đó cũng là bộ cần thiết mà gán cho QTabWidget như vậy.

Tôi hy vọng sự trợ giúp này.

+1

Vâng, tôi đã thử điều này và nó đã hoạt động - đơn giản như vậy, không cần phải gây rối với bảng định kiểu nếu tất cả những gì bạn muốn là màu nền của cửa sổ. Bạn cũng có thể thiết lập điều này trong QtDesigner, đó là những gì tôi đã làm. Trong thanh tra đối tượng, mỗi tab là một QWidget dưới QTabWidget; kiểm tra thuộc tính setAutoFillBackground cho mỗi và bạn đã hoàn tất. – U62