QT中QWidget、QDialog及QMainWindow的区别

转载 2015年07月10日 14:15:28
    QWidget类是所有用户界面对象的基类。 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己。每一个窗口部件都是矩形的,并且它们按Z轴顺序排列。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。 

    QMainWindow 类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围 菜单、工具条和一个状态条。QMainWindow常常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态条变得更容易,当用户点击菜单项或者工具条按钮时,槽会被调用。

    QDialog类是对话框窗口的基类。对话框窗口是主要用于短期任务以及和用户进行简要通讯的顶级窗口。QDialog可以是模态对话框也可以是非模态对话框。QDialog支持扩展性并且可以提供返回值。它们可以有默认按钮。QDialog也可以有一个QSizeGrip在它的右下角,使用setSizeGripEnabled()。 

    QDialog 是最普通的顶级窗口。一个不会被嵌入到父窗口部件的窗口部件叫做顶级窗口部件。通常情况下,顶级窗口部件是有框架和标题栏的窗口(尽管使用了一定的窗口部件标记,创建顶级窗口部件时也可能没有这些装饰。)在Qt中,QMainWindow和不同的QDialog的子类是最普通的顶级窗口。

    如果是顶级对话框,那就基于QDialog创建,如果是主窗体,那就基于QMainWindow,如果不确定,或者有可能作为顶级窗体,或有可能嵌入到其他窗体中,则基于QWidget创建。

    当然了,实际中,你还可以基于任何其他部件类来派生。看实际需求了,比如QFrame、QStackedWidget等等。


补充:布局

QWidget,QDialog,直接调用setLayout即可

QMainWindow 已经有布局了,需要新建一个QWidget,给QWidget设置setLayout,然后this->setCentralWidget即可

QWidget、QDialog、QMainWindow的异同点

简述在分享所有基础知识之前,很有必要在这里介绍下常用的窗口-QWidget、QDialog、QMainWindow。熟悉Qt的同学都应该知道,在新建Qt Widgets项目进行类信息选择时会碰到它们,...
  • u011012932
  • u011012932
  • 2016年01月17日 20:18
  • 13244

Qt窗口之QMainWindow、QDialog、QWidget

在 Qt 中,我们将窗口和控件统称为部件(Widget)。窗口是指程序的整体界面,可以包含标题栏、菜单栏、工具栏、关闭按钮、最小化按钮、最大化按钮等;...
  • rl529014
  • rl529014
  • 2016年05月15日 21:31
  • 3297

[转]QWidget QMainWindow QDialog的区别和相互转换

转自:http://zxwmail.blog.163.com/blog/static/120947384201010611017114/ QWidget类是所有用户界面对象的基类。 窗口部件是用...
  • hailmy
  • hailmy
  • 2013年12月05日 14:12
  • 1311

QT中QMainWindow、QWidget、QDialog的区别

QT中QMainWindow、QWidget、QDialog的区别QT中QMainWindowQWidgetQDialog的区别 QMainWindow QWidget QDialog QMainWi...
  • x348722662
  • x348722662
  • 2016年03月21日 16:19
  • 5013

【PyQt】Qt中QMainWindow, QWidget以及QDialog的区别和选择

PyQt中MainWindow, QWidget以及Dialog的区别和选择1. Qt界面分类在Qt Designer设计界面时,首先需要选择界面模板,主要分为三个类: 1. Main Window...
  • Mengwei_Ren
  • Mengwei_Ren
  • 2017年05月06日 23:49
  • 2643

Qt中三个窗口基类(QMainWindow , QWidget , QDialoh)的区别

在平常qt开发中,通常要写自己的窗口类,那么这个窗口类该继承自哪个类呢? 下面就来看下三个窗口基类的区别 1.QMainWindow: QMainWindow类提供一个带有菜单条,工具条和一个状...
  • u011619422
  • u011619422
  • 2015年08月06日 09:13
  • 4626

Qt学习笔记2:QMainWindow和QWidget的区别

在Qt工程创建时,Qt Widget Application模板下提供了不同的父类继承。 这里,主要分析一下QMainWindow和QWidget的区别。...
  • superhcq
  • superhcq
  • 2016年12月07日 18:05
  • 3749

【Qt】QWidget、QDialog、QMainWindow

QWidget:窗口部件 QDialog:是各种对话框的基类,继承自QWidget。 QMainWindow:带有菜单栏和工具栏的主窗口类,继承自QWidget。...
  • boot_black
  • boot_black
  • 2018年01月22日 14:30
  • 22

QWidget、QMainWindow、QDialog区别

QWidget、QMainWindow、QDialog区别 文档名称 QWidget、QMainWindow、QDialog区别 创建时间 20...
  • hbyzl
  • hbyzl
  • 2015年11月08日 20:32
  • 223

Qt中QWidget、QMainWindow、QDialog 三者区别

Qt类是一个提供所需的像全局变量一样的大量不同的标识符的命名空间。通常情况下,你可以忽略这个类。QObject和一些其它类继承了它,所以在这个Qt命名空间中定义的所有标识符通常情况下都可以无限制的使用...
  • alex201030273437
  • alex201030273437
  • 2012年11月17日 07:39
  • 679
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:QT中QWidget、QDialog及QMainWindow的区别
举报原因:
原因补充:

(最多只允许输入30个字)