История изменений
Исправление
equeim,
(текущая версия)
:
Когда ты запихиваешь виджеты в другой виджет и layout, он автоматически становится его child'ом. Т.е. у тебя QToolButton'ы - child'ы QToolBar'ов, а они - child'ы QVBoxLayout. Все они создаются на стеке внутри одного класса и удаляются в порядке, обратном тому, в котором они расположены в определении класса. Выходит так, что QVBoxLayout удаляется первым, и пытается удалить свои child'ы QToolBar, которые созданы на стеке, что приводит к сегфолту.
И да, тебе не нужно делать setParent(this) для стековых переменных, они удаляются автоматически.
Исправление
equeim,
:
Когда ты запихиваешь виджеты в другой виджет и layout, он автоматически становится parent'ом. Т.е. у тебя QToolButton'ы - child'ы QToolBar'ов, а они - child'ы QVBoxLayout. Все они создаются на стеке внутри одного класса и удаляются в порядке, обратном тому, в котором они расположены в определении класса. Выходит так, что QVBoxLayout удаляется первым, и пытается удалить свои child'ы QToolBar, которые созданы на стеке, что приводит к сегфолту.
И да, тебе не нужно делать setParent(this) для стековых переменных, они удаляются автоматически.
Исходная версия
equeim,
:
Когда ты запихиваешь виджеты в другой виджет и layout, он автоматически становится parent'ом. Т.е. у тебя QToolButton'ы - child'ы QToolBar'ов, а они - child'ы QVBoxLayout. Все они создаются на стеке внутри одного класса и удаляются в порядке, обратном тому, в котором они расположены в определенмии класса.
И да, тебе не нужно делать setParent(this) для стековых переменных, они удаляются автоматически.