一、设置QHeaderView表头时可能遇到的问题
在设置QTableView的表头QHeaderView的qss样式时,我们和容易在Qt帮助文档或互联网找到其qss样式,例如类似下面的样式代码:
QHeaderView
{
font-size: 12px;
color: rgb(255, 255, 255);
max-height: 30px;
min-height: 30px;
}
QHeaderView::section
{
background-color: rgb(29, 29, 36);
height: 48px;
border: solid 1px rgba(0, 0, 0, 100%);
}
QHeaderView::down-arrow
{
image: url(:/icons/resource/sort-down.png);
subcontrol-position: center right;
}
QHeaderView::up-arrow
{
image: url(:/icons/resource/sort-up.png);
subcontrol-position: center right;
}
使用上面的样式后,字体、颜色、边框、高度等都发生了变化,但是排序标志死活不出来,晚上加班搞了好久,都不行,快要怀疑人生了。
解决方案:使能表格的排序功能
方法一:
void setSortingEnabled(bool enable)
方法二:
在qt designer中设置表格的SortingEnabled属性为true
二、设置表格相邻行颜色不同的样式
通过如下方式,设置相邻行颜色的样式,但是不生效。
QTableView
{
color: rgb(255, 255, 255);
background-color: rgb(24, 24, 30);
alternate-background-color: rgb(20, 20, 25); /*相邻行颜色不同*/
border: 1px solid rgb(63, 63, 72);
gridline-color: rgb(24, 24, 30);
}
原因:没有使能表格这一属性
解决方案:使能表格这一属性
方法:
void setAlternatingRowColors(bool )
三、设置表格的图片在表格背景中央
关注qss加星的三行
QTableView[type="tb_resource"]
{
background-image: url(:icons/device_mgr/no_device.png); /* ★★★ */
background-repeat: no-repeat; /* ★★★ */
background-position: center center; /* ★★★ */
border: none;
}