我有两个QTreeWidgets,以及一个适用于两者的样式表(通过一个共同的祖先):
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以来遇到了这个问题。
答案 0 :(得分:1)
原因是一个QTreeWidget附加了一个编辑委托,另一个没有。这导致QTreeWidget的行的绘制由不同的对象绘制。一个尊重'旧'CSS方式,一个遵循'新'CSS方式,如下面的链接所述。
QStyledItemDelegate – Styling Item views
因此风格也需要类似于:
styleSheet += QString("QTreeView::item:selected:active { background-color: #123456; }");