I'm trying to get a horizontal QSplitter to allow me to resize one of its children's width to 0 without it collapsing before reaching the edge.
Here's an example of QSplitter with 2 children, a QWidget, and a QPushButton, where the button collapses before I drag it to the edge:
Minimal Reproducible example:
QSplitter *splitter = new QSplitter();
QWidget *widget = new QWidget;
QPushButton *button = new QPushButton("button");
widget->setStyleSheet("background: darkblue;");
splitter->addWidget(button);
splitter->addWidget(widget);
splitter->show();
splitter->setMinimumSize(100,100);
I tried:
setChildrenCollapsible(false), but it results in the button not budging below a certain width, here's how it looks:
Setting minimum width of
QSplitterand its children to 0.- Setting their sizes manually below the size they won't go below.
 - Changing size policy to 
ignored. 
All made no difference.
The closest question to my case that I found here is this one: How do I prevent QSplitter from hiding child widgets completely?, which did not help.
Using an event filter, I noticed a QInputMethodQueryEvent triggered when the button collapses, but I do not know how to use that.
I also noticed that the behavior I'm looking to achieve is possible with QWidget, QFrame, here's how it looks with 2 QWidgets in a QSplitter:
Based on this observation, I managed to find a workaround, by placing the widget I need (button for example) inside a QWidget, and making the container widget a child of QSplitter, and it works, but I'd rather avoid using this method.
What is causing this behavior? And how do I change it so that the button resizes until its width reaches 0 without collapsing?


