Qt编程--能在mac os中实现menubar和statusbar显示吗?

完全参照Qt入门教程(文章来源:http://wenku.baidu.com/view/142def33ee06eff9aef807ea.html)Qt学习之路(12)菜单和工具条

期望达到的效果:


在windows上可以达到这样的效果:窗口中有一个menubar,menubar下面是toolbar,然后是主窗口,最后是statusbar。

在mac下:menubar还是放在mac menubar的位置上,并不会像windows一样出现在window里。

这可能是因为,Qt是根据系统的环境去绘制控件,而对于mac os来说,只提供了一个menubar,即位于桌面顶端的那个menubar。

如若想在mac上实现窗口的menubar功能,可能只能自己描绘了。

如图:

Qt编程--能在mac os中实现menubar和statusbar显示吗?_第1张图片


此外,在mac上实现statusbar的显示与windows也有所不同。


mainwindow.cpp中的代码如下:

#include <QtGui/QAction>
#include <QtGui/QMenu>
#include <QtGui/QMenuBar>
#include <QtGui/QKeySequence>
#include <QtGui/QToolBar>
#include <QtGui/QStatusBar>
#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
     openAction = new QAction(tr("&Open"),this);
     openAction->setShortcut(QKeySequence::Open);
     openAction->setStatusTip(tr("Open a file."));
     openAction->setIcon(QIcon(":/Open.png"));

     QMenu *file = menuBar()->addMenu(tr("&File"));
     file->addAction(openAction);

     QToolBar *toolBar = addToolBar(tr("&File"));
     toolBar->addAction(openAction);

     setUnifiedTitleAndToolBarOnMac(true);//显示statusbar区域。
     statusBar()->setShown(true);//statusTip内容显示。
}

MainWindow::~MainWindow()
{

}
值得注意的是:

为了在mac os 下正确的显示statusbar和tip,需要在mainwindow的构造函数中,加入这样两句代码:

     setUnifiedTitleAndToolBarOnMac(true);
     statusBar()->setShown(true);

得到的效果如图


如果去掉 

statusBar()->setShown(true);

则整个窗口没有statusBar。

效果如图:


如果去掉

setUnifiedTitleAndToolBarOnMac(true);

效果如图:





你可能感兴趣的:(Qt编程--能在mac os中实现menubar和statusbar显示吗?)