gpt4 book ai didi

c++ - QAbstractListModel 和 Qt 样式表

转载 作者:行者123 更新时间:2023-11-28 05:20:28 24 4
gpt4 key购买 nike

我通过继承自 QAbstractListModel 创建了一个 ListView 模型。我实现了 data(const QModelIndex &, int ) 来提供列表项背景颜色(在 Qt::BackgroundRole 上)和项目文本颜色(在 Qt::ForegroundRole).

当我在没有样式表的情况下运行我的应用程序时,它可以工作,但是一旦我应用样式表(使用 QApplication::setStyleSheet),文本颜色就会出错。文本颜色保持样式表中设置的颜色。

我调试了模型,即使它正在返回,例如 QBrush(QColor(255, 0, 0)),在 ForegroundRole 上它永远不会应用于 ListView 。

当为应用程序设置样式表时,我是否需要做一些额外的事情才能让我的 ListView 模型正常工作?

正确答案(来自 king_nak 的回答)[ https://stackoverflow.com/a/41673494/1151329] :

我在样式表(.qss 文件)中原始 QListView block 之后添加了以下内容

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 */
}

在这种情况下, ListView 的对象名称必须是 MySpecialList。或者,您还可以添加一个动态属性并在样式表中对其进行测试:

QListView[specialList="true"] { /* ... */ }

关于c++ - QAbstractListModel 和 Qt 样式表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41629559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com