如何在QMainWindow中的QMenubar和QToolBar之间显示修复横幅

时间:2013-09-04 11:00:18

标签: qt

如何在两者之间显示固定横幅(带有一些小部件,如标签和按钮) QMenuBar和QToolBar? 与QStatusBar类似,但在QMenuBar和QToolBar之间。 我尝试使用QToolBar实现。

 // toolbar Banner with lable inside it.
 QLabel * bannerLabel = new QLabel(" bannerToobar with label banner.");
 bannerLabel->setAlignment( Qt::AlignVCenter );
 ui.bannerToobar->addWidget( bannerLabel );
 ui.bannerToobar->setAllowedAreas(Qt::ToolBarArea::TopToolBarArea);
 ui.bannerToobar->setMovable( false );


 QSize banner_sz = ui.bannerToobar->size();
 ui.bannerToobar->setFixedHeight( banner_sz.height() * 2 );
 QSizePolicy banner_szPolicy( QSizePolicy::Policy::Maximum,  QSizePolicy::Policy::Fixed );

 banner_szPolicy.setHorizontalStretch(255);
 ui.bannerToobar->setSizePolicy( banner_szPolicy );

但是我无法阻止用户拖动mainToolbar并将其放入与我相同的行中 bannerToolbar

1 个答案:

答案 0 :(得分:0)

你可以强制它最初使用QMainWindow::addToolBarBreak进行换行,但我不知道有什么方法可以阻止用户稍后将它放回去(除了使工具栏不可移动)。

如果有一个QToolbar :: dockLocationChanged信号(似乎已在https://bugreports.qt-project.org/browse/QTBUG-1274中被请求并解决,但我仍然没有看到任何信号),我想你可以使用insertToolBarBreak来修复它事情发生了变化。也许有一些hackish方式可以在工具栏移动时收到通知。

或者您可以使用QMainWindow :: setMenuWidget将包含QMenuBar和其他内容的小部件放入QMainWindow的菜单区域。如果你想支持样式(mac / gnome / etc),将菜单栏从窗口抬起到屏幕顶部并且工具栏与窗口标题装饰统一,这可能会变得棘手。但是在这种情况下,菜单栏和工具栏之间横幅的想法自然会出现问题: - )