QMainWindow介绍

QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar),多个工具栏(tool

bars),多个铆接部件(dock widgets),一个状态栏(status bar),及一个中心部件central widget,是许多应用程序的基础,如文本编辑器,图形编辑器等。

  • menu bar

    包含的必要的头文件:
#include<QMenuBar>

涉及到的类:

1.QMenuBar

2.QMenu

涉及到的方法:

1.创建一个菜单栏,属于QMainWIndow的方法

QMenuBar*mb=this->menuBar()//menuBar就是创建菜单栏的方法(应该是实例化了一个QMenuBar的对象),归属QMainWIndow,
//返回一个QMenuBar类型的指针,用来进行菜单栏的有关操作(掉用QMenuBar的有关函数,注意这个并不同于QPushButton的构造函数创建,有明显的依赖关系) //通过调用setMenuBar方法,将菜单栏挂在QMainBar上
this->setMenuBar(mb);

2.创建菜单,属于QMenuBar的方法

QMenu*fileMenu=mb->addMenu("文件);
QMenu*editMenu=mb->addMenu("编辑"); //addMenu()就是创建菜单项的方法(应该是实实例化了一个QMenu的对象),返回一个QMenu类型的指针,可以用这个指针来修改QMenu对象的属性.

3.创建菜单项,属于QMenu的方法

QAction*newAction=fileMenu->addAction("新建");//不知道有没有返回值,确定了,返回值为QAction类型的指针
//添加分隔符
fileMenu->addSeparator();
QAction*fileAction=fileMenu->addAction("打开");//指针fileAction代表了“打开”这一动作
  • toolbar

    包含的必要的头文件
#include<QToolBar>

涉及的类:

1.QToolBar

涉及到的关键方法:

1.QToolBar单独的类,通过构造函数创建出一个工具栏

QToolBar*bar=new QToolBar(this);
//QMainWindow的方法,将QToolBar对象挂在QMainWindow
addToolBar(bar);
//固定工具栏在某一侧,重载addToolBar函数
addToolBar(QT::leftToolBarArea,bar);
//QToolBar的方法,固定工具栏的位置
bar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);
//设置浮动
bar->setFloatable(false);
//设置是否能够移动
bar->setMovable(false);

2.创建工具,属于QToolBar的方法,返回QAction的指针

bar->addAction(newAction);//newAction正是之前菜单栏创建的动作,同一个动作
//添加分割线
bar->setSeparator();
bar->addAction(fileAction);
//工具栏中添加控件
QPushButton*btn=new QPushButton("a",this);
bar->addWidget(btn);
  • statusBar

    包含必要的头文件
#include<QStatusBar>

涉及的类:

1.QStatusBar

2.QLabel

涉及到的关键方法:

1.创建一个QStatusBar对象,并返回指针,是MainWindow的方法

QStatusBar*stBar=this->statusBar();

2.将状态栏设置到窗口中,是属于MainWindow的方法

this->setStatusBar(stBar);

3.放标签控件

QLabel*Label1=new QLabel("提示信息",this);//利用QLabel的构造函数创建一个QLabel
this->addWidget(label1);
QLabel*Label2=new QLabel(“右侧提示信息”,this);
this->addPermanentWIdget(Label2);
  • dock widgets

    必须要包含的头文件
#include<QDockWidget>

涉及到的关键方法:

1.QDockWIdget的构造函数,创建一个QDockWIdget类的对象

QDockWidget*dockWidget=new QDockWidget("浮动",this);

2.设置dockWIdget的位置的方法,属于窗口类

this->addDockWidget(Qt::BottomDockWidgetArea,dockWidget);
  • central Widget

    中心部件,只能有一个,顾名思义,中心

    可能涉及到的类:

    1.QTextEdit

    包含头文件:
#include<QTextEdit>

涉及到的关键方法:

1.控件的构造函数

QTextEdit*edit=new QTextEdit(this);

2.将中心部件挂在窗口上,属于窗口MainWIndow的方法

this->setCentralWidget(edit);

总结:将部件挂在窗口上时,set-一个,add-多个

3.QMainWindow的更多相关文章

  1. 在QMainWindow中利用多个QDockWidget构成标签页tab(原创)

    功能描述: 在QMainWindow下,使用多个QDockWidget构成可切换,可拖动,可关闭的标签页:标签页的切换由相关联的QAction触发. 实现效果: 代码如下: QDockWidget * ...

  2. QDialog QMainwindow QWidget QFrame不同时候用法.

    继承关系:在Qt中所有的类都有一个共同的基类QObject ,QWidget直接继承与QPaintDevice类,QDialog.QMainWindow.QFrame直接继承QWidget 类.   ...

  3. [转载] - QWidget、QMainWindow、QDialog和QFrame的区别

    继承关系:在Qt中所有的类都有一个共同的基类QObject ,QWidget直接继承与QPaintDevice类,QDialog.QMainWindow.QFrame直接继承QWidget 类.   ...

  4. QMainWindow的setLayout的问题

    因为QMainWindow有自己的layout,所以需要一个QWidget,然后setCentralWidget,给这个QWidget调用setLayout http://stackoverflow. ...

  5. QT中QWidget、QDialog QMainWindow

    继承关系:在Qt中所有的类都有一个共同的基类QObject ,QWidget直接继承与QPaintDevice类,QDialog.QMainWindow.QFrame直接继承QWidget 类. QW ...

  6. 【转】QT中QWidget、QDialog及QMainWindow的区别

    QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标.键盘和其它事件,并且在屏幕上绘制自己.每一个窗口部件都是矩形的,并且它们按Z轴顺序排列.一个窗口部件 ...

  7. 【Qt】QWidget、QDialog、QMainWindow的异同点【转】

    简述 在分享所有基础知识之前,很有必要在这里介绍下常用的窗口-QWidget.QDialog.QMainWindow. 熟悉Qt的同学都应该知道,在新建Qt Widgets项目进行类信息选择时会碰到它 ...

  8. QWidget、QDialog、QMainWindow的异同点

    简述 在分享所有基础知识之前,很有必要在这里介绍下常用的窗口 - QWidget.QDialog.QMainWindow. QWidget继承于QObject和QPaintDevice,QDialog ...

  9. 让QMainWindow也表现出QDialog的exec函数的特征

    前几天在做毕业设计项目的时候,使用的PyQt4,想实现这么样一个功能: 场景描述:主窗口a(QMainWindow类型)和主窗口b(QMainWindow),b是通过a窗口中某一个按钮弹出来的. 功能 ...

  10. QWidget QMainWindow QDialog 三者区别

    Qt类是一个提供所需的像全局变量一样的大量不同的标识符的命名空间.通常情况下,你可以忽略这个类.QObject和一些其它类继承了它,所以在这个Qt命名空间中定义的所有标识符通常情况下都可以无限制的使用 ...

随机推荐

  1. [TK] 送礼物

    题解引用 引理1: 区间 \([l,r]\) 是最优解的必要不充分条件是: \(l,r\) 分别是区间的最小值与最大值. 这很显然,若假设不成立,当区间向内缩小时,一定有分子不变,分母变小,进而算出更 ...

  2. 3.1 gradio的基本使用详解

    ·gr.Text:用于文本输入,适用于自然语言处理任务的模型. gr.Image:用于图像上传,适用于图像处理或计算机视觉模型. ·gr.Audio:用于音频输入,适用于语音识别或音频处理模型. im ...

  3. 异步解析文件报错 NoSuchFileException

    问题描述:同步上传解析文件超时,修改为异步解析后找不到 文件 java.nio.file.NoSuchFileException 原因:异步文件上传,主线程结束后,临时目录的文件会被清理掉,子线程此时 ...

  4. USB Type-C的工作原理与技术分析

    USB TYPE-C更加深入的应用,是从USB3.1开始的,这是因为从USB3.1开始,USB的功能开始变得更加丰富起来. USB 3.1基本规格 有SS字样的代表支持PD,有SS和10的USB标志代 ...

  5. 高通dump ftrace & kernelshark使用

    简介 高通 ramdump 可以解析出 ftrace,方便用于追踪 快省稳 问题. kernelshark 是一个可以查看 trace event 的图形化工具,方便梳理和观察内核微观行为. trac ...

  6. linux运维巡检脚本

    #!/bin/bash#author by acrossyao#date: 2021-02-08#张波勇巡检脚本echo "--------------------------------- ...

  7. Cut the Sequence(单调队列DP+set)

    题面 大意:一段长度为n的序列,分成若干段,每段值的总和不能超过m,求各段中最大值加起来的最小值. 其实最朴素的DP还是很好想的,以f[i]表示i及i以前已经分好所需的最小值,a[i]表示i点的值,那 ...

  8. 新手入门使用pinia

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  9. KubeSphere 社区双周报 | KubeKey v3.0.7 发布 | 2023-02-03

    KubeSphere 从诞生的第一天起便秉持着开源.开放的理念,并且以社区的方式成长,如今 KubeSphere 已经成为全球最受欢迎的开源容器平台之一.这些都离不开社区小伙伴的共同努力,你们为 Ku ...

  10. Octave 安装教程

    Octave 用心写著. Octave为GNU项目下的开源软件.同时它也是一种语言,专注于解决线性计算问题.因为对于矩阵计算的优化,使得其速度远高于循环计算.语法兼容Linux shell. Octa ...