Всегда показывать вторую строку в QToolbar
Фактическое поведение
Я упорядочил свои панели инструментов в верхней части в две строки, что-то вроде
MyMainWindow::init()
{
addToolBar(Qt::TopToolBarArea, m_toolbar_1);
addToolBar(Qt::TopToolBarArea, m_toolbar_2);
addToolBarBreak(Qt::TopToolBarArea);
addToolBar(Qt::TopToolBarArea, m_toolbar_3);
addToolBar(Qt::TopToolBarArea, m_toolbar_4);
addToolBar(Qt::TopToolBarArea, m_toolbar_5);
}
приводя к результатам, подобным этому примеру, используя Qt Designer. Как видите, верхние панели инструментов расположены в две строки.
Сейчас очень часто панели инструментов во второй строке (то есть m_toolbar_3
, m_toolbar_4
а также m_toolbar_5
) спрятаться. Это приводит к исчезновению всей второй строки, как видно на следующем снимке экрана.
Желаемое поведение
Я хочу, чтобы вторая строка панели инструментов отображалась всегда, независимо от того, есть ли в ней видимые панели инструментов или нет.
Это сделано для того, чтобы избежать визуального шума постоянно появляющихся / исчезающих панелей инструментов. Визуальный шум особенно узнаваем в центральном виджете (где находится "Форма..."), который перемещается вверх или вниз.
Есть способ сделать это?
2 ответа
Возможно, это не самое лучшее решение, но оно должно работать.
QToolBar
имеет сигнал видимости
Вы можете подключить это к слоту, например:
connect(m_toolbar, SIGNAL(visibilityChanged(bool)), this, SLOT(onVisibilityChanged(bool)))
Куда:
onVisibilityChanged(bool visible)
{
if(false == visible)
{
m_toolbar.setVisible(true);
}
}
Если все в порядке, панели инструментов остаются на одном месте, независимо от того, что вы можете просто установить их как неподвижные. QToolBar::setMovable
ложно.