1

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

4

1 回答 1

1

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

QStyledItemDelegate – 样式化项目视图

因此,风格也需要类似的东西:

styleSheet += QString("QTreeView::item:selected:active { background-color: #123456; }");
于 2013-08-06T20:36:51.923 回答