1

我正在 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();
}

“新窗口”按钮按预期显示在菜单栏的右侧,但是“新窗口”按钮的下半部分被菜单栏的底部分隔线剪裁,因此被隐藏:

在此处输入图像描述

如何使新的角小部件按钮完全显示在菜单栏中而不会被剪裁?

谢谢

4

1 回答 1

1

OSX 菜单栏必须有一个固定的高度,并且您的按钮不适合那里。尝试删除布局边距:

cornerLayout->setContentsMargins(0, 0, 0, 0);

和/或使按钮更小:

newWindowButton->setMaximumHeight(30);

此外,调整边距以最适合您的需求:

menuCorner->setStyleSheet("margin-top: 2");

这就是我的样子:

于 2015-02-27T08:47:01.717 回答