Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在QMainWindow中显示QMenubar和QToolBar之间的修复横幅_Qt - Fatal编程技术网

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

如何在QMainWindow中显示QMenubar和QToolBar之间的修复横幅,qt,Qt,如何在两者之间显示固定横幅(带有标签和按钮等小部件) QMenuBar和QToolBar? 类似于QStatusBar,但介于QMenuBar和QToolBar之间。 我尝试使用QToolBar实现 // toolbar Banner with lable inside it. QLabel * bannerLabel = new QLabel(" bannerToobar with label banner."); bannerLabel->setAlignment( Qt::Al

如何在两者之间显示固定横幅(带有标签和按钮等小部件) 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 );
但我无法阻止用户拖动主工具栏并将其放置在与我的主工具栏相同的行中
bannerToolbar

您可以使用强制将其最初包装,但我不知道如何防止用户稍后将其放回那里(除了使工具栏不可移动)

如果有一个QToolbar::dockLocationChanged信号(在中似乎已被重新要求并解析,但我仍然看不到任何地方的信号),我想您可以使用insertToolBarBreak在情况发生变化时对其进行修复。当工具栏移动时,也许有一些黑客的方式可以通知你


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

谢谢,@puetzk我将使用setMenuWidget,因为我的应用程序目前仅限于Windows。