1

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

QTreeView::item
{
    padding-top:    8px;
    padding-bottom: 8px;
    color: red;
}

不幸的是,这将填充应用于子项,即。所有顶级项目都具有与以前完全相同的填充。我添加了“颜色:红色;” 仅用于测试目的,但另一方面,红色文本颜色适用于所有项目,无论是顶级项目还是子项目。

我缺少一些特殊的限定词吗?我尝试使用:activeand :has-sibling,但每种情况的结果都是相同的。

截屏

我正在使用 Qt 4.6.3。我也试过 4.8,但结果是一样的。

4

2 回答 2

2

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

因此,我接受了 DanielCastro 的建议,只是在委托子类中使用了虚拟 sizehint 函数。

于 2012-12-12T11:28:29.720 回答
1

你在这里提到的风格应该可以工作。使用以下并检查它是否产生与我附加style-sheet的相同的输出 。用于测试您的 UI。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. 如果这按预期工作,那么问题出在其他地方。可能有另一种样式会覆盖您想要的样式。

于 2012-12-07T17:26:06.643 回答