完全参照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);
效果如图: