为什么我的样式表适用于一个qtreewidget,而不是另一个?

时间:2013-08-06 20:36:52

标签: qt user-interface qt4 stylesheet

我有两个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以来遇到了这个问题。

1 个答案:

答案 0 :(得分:1)

原因是一个QTreeWidget附加了一个编辑委托,另一个没有。这导致QTreeWidget的行的绘制由不同的对象绘制。一个尊重'旧'CSS方式,一个遵循'新'CSS方式,如下面的链接所述。

QStyledItemDelegate – Styling Item views

因此风格也需要类似于:

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