2015-02-06 16 views
5

Tôi có một QTreeView với biểu định kiểu xác định lựa chọn. Tuy nhiên, khi tôi sử dụng "fusion" phong cách, có một lựa chọn màu xanh thêm hình chữ nhật trên trang trí:Xóa lựa chọn màu xanh từ QTreeView theo kiểu "hợp hạch"

blue selection rectangle

Tôi đã cố gắng sử dụng show-decoration-selected: 0; trong style sheet, cũng như thiết lập setAllColumnsShowFocus(false);, nhưng có thể không làm cho nó biến mất.

Có cách nào để tắt hoặc cố định lại phần lựa chọn bao gồm trang trí không?

Để tham khảo, đây là kiểu:

QTreeView, QListView, QToolBar, QTableView 
{ 
    show-decoration-selected: 0; 
    background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, 
          stop: 0 #797979, stop: 0.2 #CCCCCC, 
          stop: 1.0 #FFFFFF); 
    alternate-background-color: #333333; 
    background-image: url(:/metal_scratched); 
    outline: 0; /* removes focus rectangle*/ 
} 

QTreeView::section, QListView::section, QToolBar::section, QTableView::section 
{ 
    border: 1px solid black; 
} 

QTreeView::item:hover:enabled, QListView::item:hover:enabled, QToolBar::item:hover:enabled, QTableView::item:hover:enabled 
{ 
    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, 
          stop: 0 transparent, stop: 0.4 rgba(150,150,150,0.5), 
          stop: 0.5 rgba(125,125,125,0.5), stop: 1.0 transparent); 
    border-color: #B0B0B0; 
} 

QTreeView::item:hover:!enabled, QListView:disabled:hover, QToolBar:disabled:hover, QTableView:disabled:hover 
{ 
/* don't highlight */ 
} 

QTreeView::item:selected, QListView::item:selected, QToolBar::item:selected, QTableView::item:selected 
{ 
    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, 
          stop: 0 transparent, stop: 0.4 rgba(75,75,75,0.5), 
          stop: 0.5 rgba(50,50,50,0.5), stop: 1.0 transparent); 
    border-color: #5A5A5A; 
    color: white; 
} 

Trả lời

8

Các vật màu xanh có thể được gỡ bỏ bằng cách ghi đè các màu lựa chọn mặc định trong style sheet. Để mọi thứ khác giống nhau (quan trọng, tiếp tục xác định màu lựa chọn mới bằng cách sử dụng QTreeView::item:selected), việc thêm thuộc tính sau sẽ loại bỏ hành vi không mong muốn.

QTreeView 
{ 
    // everything else the same 
    selection-background-color: transparent; 
} 
-1

Đang xem xét thêm, tôi phát hiện ra rằng cách duy nhất để thực sự thực hiện điều này là để thiết lập bảng của bạn Qt Application.

Giống như vậy,

QApplication app(argc, argv); 
app.setStyle(QStyleFactory::create("fusion")); 
QPalette palette; 
palette.setColor(QPalette::Highlight, QColor(your-color)); 
+0

Thật không may, việc đặt màu bảng màu không loại bỏ phần tạo tác màu xanh lam. Palettes không được tôn trọng rộng rãi bởi phong cách Qt và thường không chơi độc đáo với phong cách trang tính. –

+0

@NicolasHolthaus Ngoại trừ, tôi hiện đang sử dụng một biểu định kiểu và cách duy nhất của nó tôi đã có thể thành công thoát khỏi điểm nhấn màu xanh lam trong tất cả các tiện ích. Các giải pháp tôi đã đưa ra cũng được sử dụng bởi một số repo stylesheet trên GitHub. Tôi lấy nó từ repo QDarkStyle chính xác. –

+0

Tất cả những gì tôi có thể nói là nó không khắc phục được sự cố trong ứng dụng của tôi, nhưng thuộc tính 'background-color-color' đã làm. Có lẽ chúng tôi đang sử dụng các phiên bản Qt khác nhau (tôi đang sử dụng 5.4.2), hoặc có thể nguyên nhân gốc rễ của vấn đề của chúng tôi không thực sự giống nhau. –

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