0

如何在 QMenuBar 和 QToolBar 之间显示固定横幅(带有一些小部件,如 label 和 button )?与 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 放在同一行

4

1 回答 1

0

您可以使用QMainWindow::addToolBarBreak强制它最初包装,但我不知道有什么方法可以防止用户稍后将其放回那里(除了使工具栏不可移动)。

如果有 QToolbar::dockLocationChanged 信号(似乎已在https://bugreports.qt-project.org/browse/QTBUG-1274中请求并解决,但我仍然在任何地方都看不到信号),我假设您可以在事情发生变化时使用 insertToolBarBreak 来修复它。当工具栏移动时,也许有一些骇人听闻的方式可以让您收到通知。

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

于 2013-09-04T13:22:49.533 回答