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

来源:互联网 发布:端口110 编辑:程序博客网 时间:2024/05/19 16:07

完全参照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功能,可能只能自己描绘了。

如图:



此外,在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);

效果如图: