Qt5学习笔记 | 菜单栏、工具栏、状态栏

回到《添加动作》文中的代码:

 1 openAction = new QAction(QIcon(":/images/doc-open"), tr("&Open..."), this);
 2 openAction->setShortcuts(QKeySequence::Open);
 3 openAction->setStatusTip(tr("Open an existing file"));
 4 connect(openAction, &QAction::triggered, this, MainWindow::open);
 5  
 6 QMenu *file = menuBar()->addMenu(tr("&File"));
 7 file->addAction(openAction);
 8  
 9 QToolBar *toolBar = addToolBar(tr("&File"));
10 toolBar->addAction(openAction);

第6行,使用menuBar()函数创建了一个菜单栏,并将openAction这个动作添加到了菜单栏中。

menuBar()是QMainWindow提供的函数,可以看出返回类型是一个QMenu的指针(也就是返回了窗口的菜单栏)。如果没有菜单栏,则会新建一个。因此这里我们在还没创建一个菜单栏对象的情况下,直接使用这个menuBar()的返回值。

同样的道理,在第9行,用 addToolBar()创建工具栏,然后将openAction这个动作添加到工具栏中。为什么前面一个是menuBar()而现在的是addToolBar()呢?因为一个窗口只有一个菜单栏,但是却可能有多个工具栏。

如果多次使用addToolBar(),就能创建多个工具栏。

1 QToolBar *toolBar = addToolBar(tr("&File"));
2 toolBar->addAction(openAction);
3  
4 QToolBar *toolBar2 = addToolBar(tr("Tool Bar 2"));
5 toolBar2->addAction(openAction);

前面我们说过,使用QAction::setStatusTip()可以设置该动作在状态栏上的提示文本。但我们现在把鼠标放在按钮上,是看不到这个提示文本的。原因很简单,我们没有添加一个状态栏。类似前面的QMainWindow::menuBar()QMainWindow有一个statusBar()函数。让我们把这个函数添加上去:(加上一行代码)

1 QToolBar *toolBar2 = addToolBar(tr("Tool Bar 2"));
2 toolBar2->addAction(openAction);
3  
4 statusBar();

效果图:

statuBar()与menuBar()相似,这个函数会返回一个QStatusBar对象,如果没有的话会先创建一个再返回。

原文:https://www.devbean.net/2012/09/qt-study-road-2-menubar-toolbar-statusbar/

猜你喜欢

转载自www.cnblogs.com/fategrandorder/p/9108018.html
今日推荐