我通过继承QAbstractListModel创建了一个列表视图模型。我实施了data(const QModelIndex &, int )
来提供列表项背景颜色(在Qt::BackgroundRole
上)和项目文字颜色(在Qt::ForegroundRole
上)。
当我运行没有样式表的应用程序时它会起作用,但是一旦我应用样式表(使用QApplication::setStyleSheet
),文本颜色就会出错。文本颜色保持样式表中的颜色集。
我通过模型进行了调试,即使它在ForegroundRole上返回,例如QBrush(QColor(255, 0, 0))
,它也永远不会应用于列表视图。
在为应用程序设置样式表时,是否还需要做些额外工作才能使列表视图模型正常工作?
正确答案(来自king_nak的回答) [https://stackoverflow.com/a/41673494/1151329]:
我在原始QListView块
之后的样式表(.qss文件)中添加了以下内容QListView[default_style="true"]
{
color : default;
}
在我的代码中,我调用了
ui.listView->setProperty("default_style", QVariant(true));
它适用于由样式表设置样式的任何其他QListView,但是这个版本使用' default_style' property使用窗口小部件设置的调色板。
答案 0 :(得分:1)
您想要为特定列表小部件重置样式表的文本颜色。为此,您可以将样式表扩展到用户default
,在该窗口小部件的单独选择器中。
E.g:
QListView {
/* Style common to all list views */
}
QListView#MySpecialList {
color: default;
/* Other adjustments */
}
在这种情况下,列表视图的对象名称必须为MySpecialList
。或者,您还可以在样式表中添加动态属性并对其进行测试:
QListView[specialList="true"] { /* ... */ }