Padding/Margin is not applied to last two elements in QTreeView
-
Hello.
I have a QTreeView with the following styles applied to the items:
QTreeView::item { padding: 5px; color: red; }
If you check the following screenshot you'll see the last two items do not have the proper padding. The same happens if I switch from padding to margin. I set the color to red to make sure that rule was getting applied to all items.
I'm not sure what else to test, any clue?
Edit: Ok I've been researching into the bug a little bit more and it's getting stranger. If instead of loading the stylesheet from a file, I do this:
QApplication a(argc, argv); a.setStyleSheet("QTreeView::item {" "padding: 15px;" "color: red;" "}");
The behavior is the same, last two elements have no padding. However if I apply THE SAME stylesheet in the window's constructor, like this:
ControllerWindow::ControllerWindow(QWidget *parent) : QMainWindow(parent), ui(new ::Ui::ControllerWindow) { ui->setupUi(this); setStyleSheet("QTreeView::item {" "padding: 15px;" "color: red;" "}");
It works!... ???? I'm baffled, this makes no sense. Is this a bug?
-
@JoseTomasTocino
Try setStyleSheet only your QTreeWiev.
like this:ui->treeView->setStyleSheet("QTreeView::item {" "padding: 15px;" "color: red;" "}");
-
As I stated in the initial post, if I apply the stylesheet to either the containing window or the QTreeView itself it works, but it doesn't if I apply it to the QApplication, and it makes no sense.
-
@JoseTomasTocino
do you apply a custom item delegate to your view?
is your model static? Or do the items get added dynamically? -
@raven-worx I don't use any custom item delegate.
My model doesn't update, its items are fixed.
-
A late reply, but it looks like those elements are different in that they don't have children. Have you checked that you don't have a style with
QTreeView::item:!has-children { padding: ... }
defined anywhere which could be overriding the style when applied at the branch level?