2015-02-06 82 views
5

我有一個QTreeView與樣式表定義選擇。然而,當我使用了「融合」的風格,還有一個額外的藍色矩形選擇在裝修:從「融合」風格中刪除QTreeView中的藍色選擇

blue selection rectangle

我在樣式表中使用show-decoration-selected: 0;,以及設置setAllColumnsShowFocus(false);嘗試,但能不要讓它消失。

是否有某種方法可以禁用或重新設置包含裝飾器的選擇部分?

僅供參考,這裏的樣式表:

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; 
} 

回答

8

藍色僞像可以通過重寫在樣式表中的默認選擇顏色除去。留下一切相同(重要的是,繼續使用QTreeView::item:selected定義新的選擇顏色),添加以下屬性將刪除不需要的行爲。

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

正在進一步審查中,我發現,要真正做到這一點的唯一方法就是設置你的調色板Qt應用程序。

像這樣,

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

不幸的是,設置調色板的顏色並不能消除藍色的工件。調色板沒有得到Qt風格的廣泛認可,通常不能很好地與樣式表配合使用。 – 2015-03-23 11:25:19

+0

@NicolasHolthaus除了我正在使用樣式表及其唯一的方式,我能夠成功擺脫所有小部件中的藍色突出顯示。我提供的解決方案也被GitHub上的一些樣式表回購使用。我從QDarkStyle回購確切地說。 – 2015-03-24 13:01:33

+0

我只能說,它並沒有解決我的應用程序中的問題,但'選擇背景顏色'屬性。也許我們使用的是不同的Qt版本(我使用的是5.4.2),或者我們問題的根本原因可能並不相同。 – 2015-03-24 13:29:43