学习自:https://www.devbean.net/2012/08/qt-study-road-2-catelog/
记录学习笔记仅供自己学习使用,如有侵权,请联系作者删除。
1.主窗口QMainWindow
Qt 将用户与界面进行交互的元素抽象为一种“动作”,使用QAction类类表示。
QAction可以添加到菜单栏、工具栏上。
在实际开发过程中,QMainWindow通常只作为“主窗口”,对话框窗口则更多地使用QDialog类。我们会在后面看到,QDialog类会缺少一些QMainWindow类提供方便的函数,比如menuBar()以及toolBar()。
如下“添加动作”代码片段:
openAction = new QAction(QIcon(":/images/doc-open"), tr("&Open..."), this);
openAction->setShortcuts(QKeySequence::Open);
openAction->setStatusTip(tr("Open an existing file"));
connect(openAction, &QAction::triggered, this, MainWindow::open);
QMenu *file = menuBar()->addMenu(tr("&File")); //直接使用menuBar()函数的返回值
file->addAction(openAction);
QToolBar *toolBar = addToolBar(tr("&File"));
toolBar->addAction(openAction);
statusBar();
menuBar()函数: Qt 为我们创建了一个菜单栏。menuBar()是QMainWindow提供的函数,因此你是不会在QWidget或者QDialog中找到它的。这个函数会返回窗口的菜单栏,如果没有菜单栏则会新创建一个。 这也就解释了,为什么我们可以直接使用menuBar()函数的返回值,毕竟我们并没有创建一个菜单栏对象啊!原来,这就是menuBar()为我们创建好并且返回了的。
QMenuBar类: 菜单类,代表的是窗口最上方的一条菜单栏。我们使用其addMenu()函数为其添加菜单。尽管我们只是提供了一个字符串作为参数,但是 Qt 为将其作为新创建的菜单的文本显示出来。 & 符号,表示这可以为菜单创建一个快捷键。 当我们创建出来了菜单对象时,就可以把QAction添加到这个菜单上面,也就是addAction()函数的作用。
QToolBar类就是工具栏。我们使用的是addToolBar()函数添加新的工具栏。为什么前面一个是menuBar()而现在的是addToolBar()呢?因为一个窗口只有一个菜单栏,但是却可能有多个工具栏。 工具栏可以设置成固定的、浮动的等等。
QAction::setStatusTip()函数: 设置该动作在状态栏上的提示文本。类似前面的QMainWindow::menuBar()函数,QMainWindow有一个statusBar()函数,用于添加一个状态栏。
QStatusBar类: QMainWindow::statusBar()函数会返回一个QStatusBar对象,如果没有则先创建再返回。QStatusBar类继承了QWidget类, 因此,我们可以将其它任意QWidget子类添加到状态栏,从而实现类似 Photoshop 窗口底部那种有比例显示、有网格开关的复杂状态栏。