QAbstractListModel 和 Qt 样式表
QAbstractListModel and Qt stylesheets
我通过继承QAbstractListModel创建了一个列表视图模型。我实现了data(const QModelIndex &, int )
来提供列表项背景颜色(Qt::BackgroundRole
)和项文本颜色(Qt::ForegroundRole
)。
当我在没有样式表的情况下运行我的应用程序时,它可以工作,但是一旦我应用样式表(使用QApplication::setStyleSheet
),文本颜色就会出错。文本颜色保持样式表中设置的颜色。
我通过模型进行了调试,即使它返回,例如QBrush(QColor(255, 0, 0))
,在 ForegroundRole 上,它永远不会应用于列表视图。
在为应用程序设置样式表时,我是否需要做一些额外的事情才能使列表视图模型正常工作?
正确答案(来自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"属性的 QListView 使用小部件设置的调色板。
您希望重置特定列表小部件的样式表的文本颜色。为此,您可以在该小部件的单独选择器中将样式表扩展到用户default
。
例如:
QListView {
/* Style common to all list views */
}
QListView#MySpecialList {
color: default;
/* Other adjustments */
}
在这种情况下,列表视图的对象名称必须MySpecialList
。或者,您还可以添加动态属性并在样式表中对其进行测试:
QListView[specialList="true"] { /* ... */ }
相关文章:
- 更改"child's parent's style sheet"时如何将孩子的样式表重置为 Qt 默认样式表?
- QT 样式表主题,适用于使用属性选择器的整个应用程序
- Qt自定义小部件外观在设置样式表后没有变化
- Qt创建一个左箭头样式的按钮
- 无法增加 QToolButton 的大小(按钮样式设置为 Qt::ToolButtonTextBesideIcon)
- 无法在 qt 中为 QWidget 中的派生类设置样式表
- QT设置了所有对象以外的所有对象样式
- 如何在QT中设置样式表以选择假发背景的随机图像
- 如何在Qt样式表中使用嵌入字体
- QT 5.9.2 --> 5.10.0 应用程序样式丢失?
- Qt如何选择默认样式?
- 无法将样式添加到QT Tab小部件中的选项卡(bar)和Tab(窗格)
- Qt样式表和"一个参数"问题
- QAbstractListModel 和 Qt 样式表
- Qt样式表和QML有什么区别
- Qt样式表的用途以及它们的工作原理
- QT Designer-设置样式表 - 现在进行硬编码 - 想要以编程方式设置
- 如何在Qt应用程序中使用样式表更改QPush按钮图标大小
- c++ QT 默认样式太亮
- QTreeView的Qt样式表