Cha*_*ani 2 css c++ user-interface qt listview
我有一个 QListView,我使用以下样式表添加了行分隔符:
listView_->setStyleSheet("QListView::item { border-bottom: 1px solid black; padding: 2px; }");
Run Code Online (Sandbox Code Playgroud)
然而,意外的情况发生了 - 单击列表中的任何项目后,数据就会从显示中消失。双击即可返回。我认为这很奇怪。为什么会出现这种情况?
这是QListView

这是我点击任何项目后会发生的情况:

当我双击(而不是单击或选择操作)时,刚刚消失的数据会回来
为什么会发生这种情况以及如何避免它?
视图中的每个项目都有状态,例如selected状态代表当前选择的项目。现在,如果您查看未附加任何样式表的列表,您会注意到所选项目具有深蓝色背景和白色文本。但是,当您分配此样式表时
QListView::item { border-bottom: 1px solid black; padding: 2px; }
Run Code Online (Sandbox Code Playgroud)
事实上,您正在一次修改所有状态,包括选定的状态,这会导致它具有默认的白色背景和白色文本。例如,如果您添加另一个属性:
QListView::item { border-bottom: 1px solid black; padding: 2px; background:red; }
Run Code Online (Sandbox Code Playgroud)
您会注意到,所有项目(选定的和未选定的)都将具有红色背景。要解决此问题,您应该指定样式表必须仅应用于未选择的项目
QListView::item:!selected{ border-bottom: 1px solid black; padding: 2px; }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1614 次 |
| 最近记录: |