QMainWindow

简介: QMainWindow是一个为用户提供主窗口程序 的类,包含一个菜单栏(menu bar)、多个工具栏 (tool bars)、多个锚接部件(dock widgets)、―个 状态栏(status bar )及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器、 图片编辑器等。

QMainWindow

QMainWindow是一个为用户提供主窗口程序 的类,包含一个菜单栏(menu bar)、多个工具栏 (tool bars)、多个锚接部件(dock widgets)、―个 状态栏(status bar )及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器、 图片编辑器等。

2579fecce1f742f8ae7922446bdd217c.png


基本元素

1.菜单栏

菜单是一系列命令的列表。为了实现菜单、工具栏按钮、键盘快捷方式等命令 的一致性,Qt使用动作(Action)来表示这些命令。Qt的菜单就是由一系列的QAction 动作对象构成的列表,而菜单栏则是包容菜单的面板,它位于主窗口顶部、主窗口 标题栏的下面。一个主窗口最多只有一个菜单栏。


2.状态栏

状态栏通常显示GUI应用程序的一些状态信息,它位于主窗口的最底部。用户可以在状态栏上添加、使用Qt窗口部件。一个主窗口最多只有一个状态栏。


3.工具栏

工具栏是由一系列的类似于按钮的动作排列而成的面板,它通常由一些经常使 用的命令(动作)组成。工具栏的位于在菜单栏的下面、状态栏的上面,可以停靠 在主窗口的上、下、左、右四个方向上。一个主窗口可以包含多个工具栏。


4.锚接部件

锚接部件作为一个容器使用,以包容其他窗口部件来实现某些功能。例如,Qt 设计器的属性编辑器、对象监视器等都是由锚接部件包容其他的Qt窗口部件来实 现的。它位于工具栏区的内部,可以作为一个窗口自由地浮动在主窗口上面,也可 以像工具栏一样停靠在主窗口的上、下、左、右四个方向上,一个主窗口可以包含 多个锚接部件。


5.中心部件

中心部件处在锚接部件区的内部、主窗口的中心,一个主窗口只有一个中心部件。 於注意 :主窗口 QMain Window具有自己的布局管理器,因此在QMainWindow 窗口上设置布局管理器或者创建一个父窗口部件作为QMainWindow的布局管理 器都是不允许的。但可以在主窗口的中心部件上设置管理器。


为了控制主窗口工具栏和锚接部件的显隐,在默认情况下,QMainWindow主 窗口提供了一个上下文菜单(Context Menu)。通常,通过在工具栏或锚接部件上 单击鼠标右键就可以激活该上下文菜单,也可以通过函数QMainWindow:: createPopupMenu()激活该菜单。此外,还可以重写 QMainWindow::createPopupMenu() 函数,实现自定义的上下文菜单。


菜单与工具栏的实现

菜单与工具栏都与QAction类密切相关,工具栏上的功能按钮与菜单中的选项 条目相对应,完成相同的功能,使用相同的快捷键与图标。QAction类为用户提供 了一个统一的命令接口,无论是从菜单触发还是从工具栏触发,或通过快捷键触发 都调用同样的操作接口,以达到同样的目的。


1.动作(Action)的实现


以下是实现基本文件操作的动作(Action)的代码:

void ImgProcessor::createActions()
{
    // “打开”动作
    openFileAction =new QAction(QIcon("open.png"),tr("打开"),this); 
    openFileAction->setShortcut(tr("Ctrl+O"));
    openFileAction->setStatusTip (tr ( "打开一个文件"));
}


2.菜单(Menus )的实现


在实现了各个动作之后,需要将它们通过菜单、工具栏或快捷键的方式体现出 来,以下是菜单的实现函数createMenus()代码:

void ImgProcessor::createMenus()
{
    // 文件菜单
    fileMenu =menuBar()一〉addMenu(tr("文件”));
    fileMenu->addAction(openFileAction);
}


3.工具栏(ToolBars )的实现


接下来实现相对应的工具栏createToolBars(),主窗口的工具栏上可以有多个工 具条,通常釆用一个菜单对应一个工具条的方式,也可根据需要进行工具条的划分。

void ImgProcessor::createToolBars()
{
    //文件工具条
    fileTool =addToolBar ( "File*1);
    fileTool->addAction(openFileAction);
}

后续代码会在本次的最后的例子中展示。

目录
相关文章
|
10月前
|
存储 C++
14 QT - QMainWindow
14 QT - QMainWindow
40 0
|
11月前
|
前端开发 数据可视化 C++
Qt 之 QWidget QLabel
Qt 之 QWidget QLabel
86 0
|
10月前
|
数据安全/隐私保护
22 QT - QLineEdit
22 QT - QLineEdit
45 0
|
17天前
Qt绘图之QWidget
Qt绘图之QWidget
36 1
|
3月前
Qt之QMainWindow
Qt之QMainWindow
|
4月前
|
存储 监控 图形学
【QT】GraphicsView、QGraphicsScene、QGraphicsEllipseItem的使用
【QT】GraphicsView、QGraphicsScene、QGraphicsEllipseItem的使用
227 0
|
4月前
|
存储
QT基础入门——QMainWindow与对话框QDialog(三)
QT基础入门——QMainWindow与对话框QDialog(三)
196 0
QT基础入门——QMainWindow与对话框QDialog(三)
|
容器
QMainWindow
QMainWindow是一个为用户提供主窗口程序 的类,包含一个菜单栏(menu bar)、多个工具栏 (tool bars)、多个锚接部件(dock widgets)、―个 状态栏(status bar )及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器、 图片编辑器等。
118 0
|
Linux C++ iOS开发
Qt 5——对话框QDialog
Qt 5——对话框QDialog
554 0
|
数据安全/隐私保护
Qt之对话框(QDialog)
Qt之对话框(QDialog)
189 0