gpt4 book ai didi

c++ - 为什么向 QListView 添加样式表会改变不是由样式表本身决定的行为?

转载 作者:行者123 更新时间:2023-11-30 01:49:53 24 4
gpt4 key购买 nike

我有一个 QListView,我使用以下样式表向其中添加了行分隔符:

listView_->setStyleSheet("QListView::item { border-bottom: 1px solid black; padding: 2px; }");

然而,意想不到的事情发生了——单击列表中的任何元素,数据从显示中消失。双击返回。我觉得这很奇怪。为什么会这样?

这是 QListView

The QListView

这是我点击任何元素时发生的情况:

enter image description here

刚刚消失的数据,当我双击(而不是单击 - 或选择操作)时又回来了

为什么会发生这种情况,我该如何避免?

最佳答案

View 中的每个元素都有状态,例如 selected 状态表示当前选中的元素。现在,如果您在没有附加任何样式表的情况下查看列表,您会注意到所选元素具有深蓝色背景和白色文本。但是,当您分配此样式表时

QListView::item { border-bottom: 1px solid black; padding: 2px; }

您实际上是在一次修改所有状态,包括选定状态,这导致它具有默认的白色背景和白色文本。例如,如果您添加另一个属性:

QListView::item { border-bottom: 1px solid black; padding: 2px; background:red; }

您会注意到,所有元素(包括选中的和未选中的)都将具有红色背景。要解决此问题,您应该指定您的样式表必须仅应用于未选中的元素

QListView::item:!selected{ border-bottom: 1px solid black; padding: 2px; }

关于c++ - 为什么向 QListView 添加样式表会改变不是由样式表本身决定的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28319896/

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