我想设置QTreeView的项目样式,即增加它们的顶部/底部填充。 这是我的片段:
QTreeView::item
{
padding-top: 8px;
padding-bottom: 8px;
color: red;
}
不幸的是,仅将填充应用于子项目,即。所有顶级项目都具有与以前完全相同的填充。我添加了"颜色:红色;"仅用于测试目的,但另一方面,红色文本颜色适用于所有项目,无论是顶层还是子项。
我缺少一些特殊的资格赛吗?我尝试使用:active
和:has-sibling
,但每种情况的结果都相同。
我正在使用Qt 4.6.3。我也试过4.8,但结果是一样的。
答案 0 :(得分:2)
问题在于我在视图上使用的QStyledItemDelegate子类。委托仅用于绘制项目的水平线,我做了不重新实现sizehint函数,但经过进一步检查,似乎子类返回了错误的sizehint。
因此我接受了DanielCastro的建议,并在委托子类中使用了virtual sizehint函数。
答案 1 :(得分:1)
你在这里提到的风格应该有效。使用以下style-sheet
并检查它是否产生与输出相同的输出
I have attached。使用Qt Designer
来测试您的用户界面。
QTreeWidget{outline:0;}
QTreeWidget::item
{
padding:5px;
background-color: rgb(235, 235, 235);
color: #1c1c1c;
border-right: 10px solid rgb(255, 170, 0);
font: 400 9.3pt "Segoe UI";
}
QTreeWidget::item:has-children
{
border-right: 10px solid rgb(255, 0, 255);
}
您可以将此代码粘贴到:
Settings->Preferences->Code->Print/Preview Configuration->Style Sheet
使用Qt Designer
代替在您的应用中自行测试此样式,将确保外部任何内容都不会影响您的style-sheet
。如果这按预期工作,则问题出在其他地方。可能有另一种风格可以覆盖你想要的风格。