2015-09-13 2 views
0

фактическое поведение

Я заказал свои панели инструментов в верхней области в две линии, что-то вродеВсегда показывать вторую строчку в 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. Как вы можете видеть, верхние панели инструментов выложены двумя линиями. Toolbars are layed out over two lines

Сейчас очень распространено, что панели инструментов во второй строке (то есть m_toolbar_3, m_toolbar_4 и m_toolbar_5) получить скрытый. Это приводит к исчезновению всей второй строки, как видно на следующем скриншоте. enter image description here

Желаемая Поведение

Я хочу вторую панель линии всегда будет отображаться, независимо от того, есть ли видимые панели инструментов в нем или нет.

Во избежание визуального шума постоянно появляющихся/исчезающих инструментов. Визуальный шум особенно заметен в центральном виджете (где размещается «Form ...»), который либо перемещается вверх, либо вниз.

Есть ли способ сделать это?

+0

Кажется, что единственный способ сделать это - либо запланировать Qt, либо иметь фиктивную невидимую панель инструментов. –

+0

Должен ли пользователь иметь возможность изменять порядок QToolBars или менять свою позицию внутри gui, или QToolBars всегда остается на том же месте? – Gombat

+0

@ Gombat для меня не имеет значения. Поэтому, если бы решение разрешило только фиксированные, которые я получил для этого, или наоборот. – mfuchs

ответ

0

Возможно, это не лучшее решение, но оно должно работать.

QToolBar имеет сигнал visibilityChanged.

Вы можете подключить, что слот, например:

connect(m_toolbar, SIGNAL(visibilityChanged(bool)), this, SLOT(onVisibilityChanged(bool)))

Где:

onVisibilityChanged(bool visible) 
{ 
    if(false == visible) 
    { 
     m_toolbar.setVisible(true); 
    } 
} 
+0

Это нормально, если панели инструментов становятся невидимыми. Фактически я изменяю их видимость программно, в зависимости от того, какие панели инструментов поддерживаются выбранной командой. Так что держать их всех видимыми, к сожалению, не вариант для меня. Это пустая строка инструментов, которая должна оставаться видимой. – mfuchs

0

Если это нормально, что панели инструментов не остаются на том же месте, независимо от того, что вы могли бы просто установите их в не подвижные. QToolBar::setMovable - false.

+0

Проблема в том, что я изменяю видимость панелей инструментов. Поэтому в зависимости от выбранной команды может быть, что на второй строке нет панели инструментов. Если нет видимой панели инструментов, Qt скрывает вторую строку, что приводит к визуальному отвлечению и дезориентации. – mfuchs

 Смежные вопросы

  • Нет связанных вопросов^_^