Qt 如何防止QMenuBar中的cornerWidget被剪切
我正在OSX小牛上编写新手Qt5(.4.0)代码。下面是我的独立测试用例:Qt 如何防止QMenuBar中的cornerWidget被剪切,qt,qt5,qmenubar,Qt,Qt5,Qmenubar,我正在OSX小牛上编写新手Qt5(.4.0)代码。下面是我的独立测试用例: #include <QApplication> #include <QMainWindow> #include <QtGui> #include <QMenuBar> #include <QGridLayout> #include <QPushButton> int main( int argc, char *argv[] ) { QApp
#include <QApplication>
#include <QMainWindow>
#include <QtGui>
#include <QMenuBar>
#include <QGridLayout>
#include <QPushButton>
int
main( int argc, char *argv[] ) {
QApplication app( argc, argv );
QMainWindow* mw = new QMainWindow();
mw->menuBar()->setNativeMenuBar( false );
QMenu* fileMenu = mw->menuBar()->addMenu( "&File" );
QMenu* optionsMenu = mw->menuBar()->addMenu( "&Options" );
QWidget* menuCorner = new QWidget( mw->menuBar() );
QGridLayout* cornerLayout = new QGridLayout();
QPushButton* newWindowButton = new QPushButton( "New Window" );
cornerLayout->addWidget( newWindowButton, 1, 0 );
menuCorner->setLayout( cornerLayout );
mw->menuBar()->setCornerWidget( menuCorner );
mw->show();
return app.exec();
}
#包括
#包括
#包括
#包括
#包括
#包括
int
main(int argc,char*argv[]){
QApplication应用程序(argc、argv);
QMainWindow*mw=新的QMainWindow();
mw->menuBar()->setNativeMenuBar(false);
QMenu*fileMenu=mw->menuBar()->addMenu(“&File”);
QMenu*选项menu=mw->menuBar()->addMenu(“&Options”);
QWidget*menuCorner=新的QWidget(mw->menuBar());
QGridLayout*cornerLayout=新的QGridLayout();
QPushButton*newWindowButton=新QPushButton(“新窗口”);
cornerLayout->addWidget(newWindowButton,1,0);
菜单角->设置布局(角落布局);
mw->menuBar()->setCornerWidget(menuCorner);
mw->show();
返回app.exec();
}
“新窗口”按钮按预期显示在菜单栏的右侧,但“新窗口”按钮的下半部分被菜单栏的底部分隔线夹住并隐藏:
如何使新的“拐角”小部件按钮在菜单栏中完全显示而不被剪裁
谢谢OSX菜单栏必须有固定的高度,并且您的按钮不能安装在那里。尝试删除布局页边距:
cornerLayout->setContentsMargins(0, 0, 0, 0);
和/或使按钮变小:
newWindowButton->setMaximumHeight(30);
此外,调整利润率,使其最适合您的需要:
menuCorner->setStyleSheet("margin-top: 2");
对我来说,情况就是这样:
谢谢@svlasov。这两种方法都使“新窗口”按钮几乎完全可见,但是在这两种情况下,按钮的底部仍然被菜单栏的底部分隔线所夹持。为了使按钮在菜单栏中完全可见,我必须降低到最大高度12,然后剪辑按钮文本,使按钮变得不方便。既然我调用了
mw->menuBar()->setNativeMenuBar(false)
,我难道不应该免受OSX菜单栏的固定高度限制吗?有没有办法强迫非本机菜单栏适应按钮的自然大小?@lcikgl你能发布一个屏幕截图吗?我将继续接受@svlasov的答案,因为它启发了一个可行的解决方法,即调用mw->menubar()->setMinimumHeight(30)代码>以及角落布局->设置内容边缘(0,0,0,0)代码>。这并不完美,因为“文件”和“选项”在水平中心上方偏移,加上我不得不硬连线30像素的神奇数字,但结果是可以接受的。似乎应该有一个解决方案,允许Qt布局引擎自动调整按钮和菜单栏,使它们看起来自然,而无需硬连线的魔术数字。欢迎反馈。您好@svlasov,我刚刚看到您的截图请求。我尝试过这样做,但是作为一个新的海报,我还没有足够的声誉点来发布图片。你是想把按钮放到全局菜单还是窗口菜单?发布截图url。