0

实际行为

我将顶部区域的工具栏分两行排序,例如

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_4m_toolbar_5)被隐藏是很常见的。这会导致整个第二行消失,如以下屏幕截图所示。 在此处输入图像描述

期望的行为

我希望始终显示第二个工具栏行,无论其中是否有可见的工具栏。

这是为了避免不断出现/消失的工具栏的视觉噪音。视觉噪音在中央小部件(放置“Form ...”的位置)中特别容易识别,它可以向上或向下移动。

有没有办法做到这一点?

4

2 回答 2

0

这可能不是有史以来最好的解决方案,但它应该可以工作。

QToolBar有一个visibilityChanged信号。

您可以将其连接到插槽,例如:

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

在哪里 :

onVisibilityChanged(bool visible)
{
    if(false == visible)
    {
        m_toolbar.setVisible(true);
    }
}
于 2015-09-14T13:34:13.300 回答
0

如果工具栏保持在同一个位置是可以的,无论您可以简单地将它们设置为不可移动。QToolBar::setMovable为假。

于 2015-09-14T20:40:03.580 回答