2013-08-06 64 views
1

我有兩個QTreeWidgets,並且被施加到兩個樣式表(通過一個共同的祖先):爲什麼我的樣式表適用於一個qtreewidget,但不是另一個?

styleSheet += QString("QWidget:!active { "); 
styleSheet += QString(" selection-background-color: %1; ").arg(inactiveHighlight.name()); 
styleSheet += QString(" selection-color: %1;   ").arg(inactiveHighlightText.name()); 
styleSheet += QString("}\n"); 
styleSheet += QString("QWidget:active { "); 
styleSheet += QString(" selection-background-color: %1; ").arg(activeHighlight.name()); 
styleSheet += QString(" selection-color: %1;   ").arg(activeHighlightText.name()); 
styleSheet += QString("}\n"); 

第一樹應用的選擇的色彩,其它則沒有。

我使用的是Qt 4.8.5,並且自Qt 4.6.3以來出現過這個問題。

回答

1

原因是一個QTreeWidget有一個編輯代理附加到它,另一個沒有。這會導致QTreeWidget行的繪製由不同的對象繪製。我們尊重'舊'CSS方式,一種遵循'新'CSS方式,如下面的鏈接所述。

QStyledItemDelegate – Styling Item views

這樣的風格也需要類似的東西:

styleSheet += QString("QTreeView::item:selected:active { background-color: #123456; }"); 
相關問題