带有qtreeview::item的Qt样式表是否仅适用于子项?

带有qtreeview::item的Qt样式表是否仅适用于子项?,qt,stylesheet,qtreeview,Qt,Stylesheet,Qtreeview,我想为QTreeView的项目设置样式,即稍微增加它们的顶部/底部填充。 这是我的片段: QTreeView::item { padding-top: 8px; padding-bottom: 8px; color: red; } 不幸的是,此仅将填充应用于子项,即所有顶级项的填充与以前完全相同。我添加了“color:red;”只是为了测试,但另一方面,红色文本颜色适用于所有项目,无论是顶级项目还是子项目 是否有一些特殊的限定词我错过了?我尝试了:active和:

我想为QTreeView的项目设置样式,即稍微增加它们的顶部/底部填充。 这是我的片段:

QTreeView::item
{
    padding-top:    8px;
    padding-bottom: 8px;
    color: red;
}
不幸的是,此仅将填充应用于子项,即所有顶级项的填充与以前完全相同。我添加了“color:red;”只是为了测试,但另一方面,红色文本颜色适用于所有项目,无论是顶级项目还是子项目

是否有一些特殊的限定词我错过了?我尝试了
:active
:has sibling
,但结果都是相同的


我使用的是Qt4.6.3。我也尝试过使用4.8,但结果是一样的。

您在这里提到的样式应该可以使用。使用下面的
样式表
,并检查它是否产生与所需样式表相同的输出 . 使用
Qt设计器
测试用户界面

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
而不是在应用程序内部测试此样式,这将确保没有任何外部因素影响您的
样式表
。如果这能达到预期效果,那么问题就出在其他地方。可能还有另一种样式会覆盖您想要的样式。

问题在于我在视图上使用的QStyledItemDelegate子类。该委托只用于为项目绘制水平线,我没有重新实现sizehint函数,但经过进一步检查,该子类似乎返回了错误的sizehint


因此,我接受了DanielCastro的建议,只是在delegate子类中使用了virtual-sizehint函数。

是否必须使用样式表来实现这一点?您可以将qabstractemdelegate子类化,并重写sizeHint以获得所需的内容want@DanielCastro这当然会更容易,因为我有一个包含其他定义的更大的样式表。我会试试你的想法!