Я упорядочил свои панели инструментов в верхней части в две строки, что-то вроде
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
) спрятаться.
Это приводит к исчезновению всей второй строки, как видно на следующем снимке экрана.
Я хочу, чтобы вторая строка панели инструментов отображалась всегда, независимо от того, есть ли в ней видимые панели инструментов или нет.
Это сделано для того, чтобы избежать визуального шума постоянно появляющихся / исчезающих панелей инструментов.
Визуальный шум особенно узнаваем в центральном виджете (где находится «Форма …»), который перемещается вверх или вниз.
Есть способ сделать это?
Возможно, это не самое лучшее решение, но оно должно работать.
QToolBar
имеет visibilityChanged сигнал.
Вы можете подключить это к слоту, например:
connect(m_toolbar, SIGNAL(visibilityChanged(bool)), this, SLOT(onVisibilityChanged(bool)))
Куда :
onVisibilityChanged(bool visible)
{
if(false == visible)
{
m_toolbar.setVisible(true);
}
}
Если все в порядке, панели инструментов остаются на одном месте, независимо от того, что вы можете просто установить их как неподвижные. QToolBar::setMovable
ложно.