如何防止在 QMenuBar 中裁剪 cornerWidget
How to prevent clipping of cornerWidget in QMenuBar
我正在 OSX Mavericks 上编写新手 Qt5(.4.0) 代码。这是我的独立测试用例:
#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();
}
"New Window" 按钮按预期显示在菜单栏的右侧,但是 "New Window" 按钮的下半部分被剪裁,因此被底部分隔线隐藏菜单栏:
如何使新的角部件按钮完全显示在菜单栏中而不被剪裁?
谢谢
OSX 菜单栏必须有固定的高度,而您的按钮不适合那里。尝试删除布局边距:
cornerLayout->setContentsMargins(0, 0, 0, 0);
和/或缩小按钮:
newWindowButton->setMaximumHeight(30);
此外,根据您的需要调整边距:
menuCorner->setStyleSheet("margin-top: 2");
这是我的样子:
我正在 OSX Mavericks 上编写新手 Qt5(.4.0) 代码。这是我的独立测试用例:
#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();
}
"New Window" 按钮按预期显示在菜单栏的右侧,但是 "New Window" 按钮的下半部分被剪裁,因此被底部分隔线隐藏菜单栏:
如何使新的角部件按钮完全显示在菜单栏中而不被剪裁?
谢谢
OSX 菜单栏必须有固定的高度,而您的按钮不适合那里。尝试删除布局边距:
cornerLayout->setContentsMargins(0, 0, 0, 0);
和/或缩小按钮:
newWindowButton->setMaximumHeight(30);
此外,根据您的需要调整边距:
menuCorner->setStyleSheet("margin-top: 2");
这是我的样子: