我有一个QListView,使用以下样式表向其中添加了行分隔符:
listView_->setStyleSheet("QListView::item { border-bottom: 1px solid black; padding: 2px; }");
但是,发生了意外情况-只需单击列表中的任何项目,显示中的数据就会消失。双击即可返回。我认为这很奇怪。为什么会这样呢?
这是QListView
这是我单击任何项目后立即发生的情况:
刚刚消失的数据会在我双击(而不是单击或选择操作)时返回
为什么会发生这种情况,我该如何避免呢?
视图中的每个项目都有状态,例如,一个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; }
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句