QTableView 小部件的 Qt 样式表中有哪些可用选项?
What are the options available within a Qt Stylesheet for a QTableView widget?
我到处寻找有关 Qt 小部件样式表的详细文档 - 特别是 QTableView 小部件。以下是我发现的一些有用(尽管不完整)的资源:
- https://doc.qt.io/qt-5/stylesheet-reference.html
- QTableView/QTableWidget grid stylesheet - grid line width
- How to set stylesheet for the current item in QTableView
我只是想获取 QTableView 样式表选项的详细(完整)列表。这个文档在哪里?奇怪的是,我必须从整个网络上获取一些信息才能拼凑出一个完整的样式表。
这是我现在使用的样式表的示例:
QTableView {
color: black;
gridline-color: black;
border-color: rgb(242, 128, 133);
font: 10px;
}
QHeaderView::section {
background-color: rgb(71, 153, 176);
color: white;
height: 35px;
font: 14px;
}
QTableView::item:focus{
border: 2px solid rgb(242, 128, 133);
background-color: rgb(255, 254, 229);
}
QScrollBar:vertical {
background: rgb(188, 224, 235);
}
QScrollBar::handle:vertical {
background: rgb(71, 153, 176);
}
QScrollBar:horizontal {
background: rgb(188, 224, 235);
}
QScrollBar::handle:horizontal {
background: rgb(71, 153, 176);
}
这是我仍然无法用样式表完成的事情:
- 我想在分组选中时更改单元格的颜色。
- 此样式表隐藏了我 table
中的“行”
- 我也想编辑行的样式表。
在这里您可以看到在组中选中时的单元格行为:
我希望蓝色单元格与粉红色轮廓单元格的样式相匹配。
QTableView 小部件有哪些选项?我已经尝试了 QTableView::rows、QTableView::selection 和许多其他方法,但都没有成功。
处理 QSS (Qt Style Sheets) 时要考虑的一个重要方面是,当设置 any 属性 时复杂的小部件,所有其他基本属性必须设置。
文档清楚地说明了“常见”小部件(如 QComboBox 或 QScrollBar),但不清楚更多有问题的小部件的属性,如 QHeaderView(负责显示 title[=66= 部分的小部件) ] 的行或列)。
最重要的是,严格 相关 属性,如 width
或 height
(所有 不支持 小部件) 必须 both 被设置。
如果您想为样式表中的 header 部分设置特定的高度,您 也必须 设置宽度。
QHeaderView::section {
background-color: rgb(71, 153, 176);
color: white;
height: 35px;
width: 150px;
font: 14px;
}
不幸的是,使用 QSS 设置大小有两个缺点:
- 大小是固定的,基于“像素”大小;
- 自动禁用文本省略(至少对于 QHeaderView 和普通样式);
这给我们带来了一个重要的方面:样式表 必须 小心使用(唯一了解这一点的方法是经验和研究来源)。几乎总是不鼓励在样式表中设置明确的大小,尤其是当这些大小处理文本显示时。如果要为 header 设置默认尺寸,则应改用 setDefaultSectionSize()
。
最后,即使问题已被 OP 解决,为了清楚起见,我将添加以下内容。
项目视图的选择颜色可以通过两种不同的方式设置:
设置::item
pseudo-selector颜色:
QTableView::item:selected {
background-color: rgb(242, 128, 133);
}
以上内容将设置项目的背景并完全覆盖样式绘画行为(取决于样式),包括基于调色板的任何进一步的“奇特”绘图。简单地说,它可能是 普通 背景颜色。
设置项目视图选择器和 selection-background-color
属性:
QTableView {
...
selection-background-color: rgb(242, 128, 133);
}
以上将设置 table Highlight
调色板角色,然后恢复为默认样式绘画,提供该样式使用的任何“奇特”绘图。
注意:样式使用调色板颜色作为 参考,有时它们通过使用自定义(通常基于像素图)绘画完全忽略它们。如上所述,selection-background-color
方法仍然在很大程度上依赖于样式,这意味着绘画将部分(或完全)被样式覆盖,可能会忽略或更改所选颜色。如果选择颜色比 application/system 样式一致性更重要,您应该使用 ::item:selected
选择器。
我到处寻找有关 Qt 小部件样式表的详细文档 - 特别是 QTableView 小部件。以下是我发现的一些有用(尽管不完整)的资源:
- https://doc.qt.io/qt-5/stylesheet-reference.html
- QTableView/QTableWidget grid stylesheet - grid line width
- How to set stylesheet for the current item in QTableView
我只是想获取 QTableView 样式表选项的详细(完整)列表。这个文档在哪里?奇怪的是,我必须从整个网络上获取一些信息才能拼凑出一个完整的样式表。
这是我现在使用的样式表的示例:
QTableView {
color: black;
gridline-color: black;
border-color: rgb(242, 128, 133);
font: 10px;
}
QHeaderView::section {
background-color: rgb(71, 153, 176);
color: white;
height: 35px;
font: 14px;
}
QTableView::item:focus{
border: 2px solid rgb(242, 128, 133);
background-color: rgb(255, 254, 229);
}
QScrollBar:vertical {
background: rgb(188, 224, 235);
}
QScrollBar::handle:vertical {
background: rgb(71, 153, 176);
}
QScrollBar:horizontal {
background: rgb(188, 224, 235);
}
QScrollBar::handle:horizontal {
background: rgb(71, 153, 176);
}
这是我仍然无法用样式表完成的事情:
- 我想在分组选中时更改单元格的颜色。
- 此样式表隐藏了我 table 中的“行”
- 我也想编辑行的样式表。
在这里您可以看到在组中选中时的单元格行为:
QTableView 小部件有哪些选项?我已经尝试了 QTableView::rows、QTableView::selection 和许多其他方法,但都没有成功。
处理 QSS (Qt Style Sheets) 时要考虑的一个重要方面是,当设置 any 属性 时复杂的小部件,所有其他基本属性必须设置。
文档清楚地说明了“常见”小部件(如 QComboBox 或 QScrollBar),但不清楚更多有问题的小部件的属性,如 QHeaderView(负责显示 title[=66= 部分的小部件) ] 的行或列)。
最重要的是,严格 相关 属性,如 width
或 height
(所有 不支持 小部件) 必须 both 被设置。
如果您想为样式表中的 header 部分设置特定的高度,您 也必须 设置宽度。
QHeaderView::section {
background-color: rgb(71, 153, 176);
color: white;
height: 35px;
width: 150px;
font: 14px;
}
不幸的是,使用 QSS 设置大小有两个缺点:
- 大小是固定的,基于“像素”大小;
- 自动禁用文本省略(至少对于 QHeaderView 和普通样式);
这给我们带来了一个重要的方面:样式表 必须 小心使用(唯一了解这一点的方法是经验和研究来源)。几乎总是不鼓励在样式表中设置明确的大小,尤其是当这些大小处理文本显示时。如果要为 header 设置默认尺寸,则应改用 setDefaultSectionSize()
。
最后,即使问题已被 OP 解决,为了清楚起见,我将添加以下内容。
项目视图的选择颜色可以通过两种不同的方式设置:
设置
::item
pseudo-selector颜色:QTableView::item:selected { background-color: rgb(242, 128, 133); }
以上内容将设置项目的背景并完全覆盖样式绘画行为(取决于样式),包括基于调色板的任何进一步的“奇特”绘图。简单地说,它可能是 普通 背景颜色。
设置项目视图选择器和
selection-background-color
属性:QTableView { ... selection-background-color: rgb(242, 128, 133); }
以上将设置 table
Highlight
调色板角色,然后恢复为默认样式绘画,提供该样式使用的任何“奇特”绘图。
注意:样式使用调色板颜色作为 参考,有时它们通过使用自定义(通常基于像素图)绘画完全忽略它们。如上所述,selection-background-color
方法仍然在很大程度上依赖于样式,这意味着绘画将部分(或完全)被样式覆盖,可能会忽略或更改所选颜色。如果选择颜色比 application/system 样式一致性更重要,您应该使用 ::item:selected
选择器。