Qt窗口之QMainWindow、QDialog、QWidget
2016-05-15 21:31
351 查看
在 Qt 中,我们将窗口和控件统称为部件(Widget)。
窗口是指程序的整体界面,可以包含标题栏、菜单栏、工具栏、关闭按钮、最小化按钮、最大化按钮等。
控件是指按钮、复选框、文本框、表格、进度条等这些组成程序的基本元素。一个程序可以有多个窗口,一个窗口也可以有多个控件。
QWidget 是所有用户界面元素的基类,窗口和控件都是直接或间接继承自 QWidget,QMainWindow、QWidget、QDialog 三个类就是用来创建窗口的,可以直接使用也可以继承后再使用。
QMainWindow 窗口可以包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式,可以作为GUI程序的主窗口。
如下图所示:
QDialog 是对话框窗口的基类。对话框主要用来执行短期任务,或与用户进行互动,它可以是模态的也可以是非模态的。QDialog 没有菜单栏、工具栏、状态栏等。
如下图所示:
如果是主窗口,就使用 QMainWindow;如果是对话框,就是用 QDialog;如果不确定,或有可能作为顶级窗口,也有可能嵌入到其他窗口中,那么使用 QWidget。
需要注意的是,窗口和控件都继承自 QWidget,如果不为控件指定父对象,它就会被作为窗口处理,这时 setWindowTitle() 和 setWindowIcon() 函数就会生效。
请看下面的代码:
运行代码,会在距离显示器 x=100, y=50 的位置弹出两个窗口,
如下图所示:
可以发现,窗口和控件没有绝对的区别,控件也可以成为窗口,这取决于它有没有父对象。
窗口是指程序的整体界面,可以包含标题栏、菜单栏、工具栏、关闭按钮、最小化按钮、最大化按钮等。
控件是指按钮、复选框、文本框、表格、进度条等这些组成程序的基本元素。一个程序可以有多个窗口,一个窗口也可以有多个控件。
QWidget 是所有用户界面元素的基类,窗口和控件都是直接或间接继承自 QWidget,QMainWindow、QWidget、QDialog 三个类就是用来创建窗口的,可以直接使用也可以继承后再使用。
QMainWindow 窗口可以包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式,可以作为GUI程序的主窗口。
如下图所示:
QDialog 是对话框窗口的基类。对话框主要用来执行短期任务,或与用户进行互动,它可以是模态的也可以是非模态的。QDialog 没有菜单栏、工具栏、状态栏等。
如下图所示:
如果是主窗口,就使用 QMainWindow;如果是对话框,就是用 QDialog;如果不确定,或有可能作为顶级窗口,也有可能嵌入到其他窗口中,那么使用 QWidget。
需要注意的是,窗口和控件都继承自 QWidget,如果不为控件指定父对象,它就会被作为窗口处理,这时 setWindowTitle() 和 setWindowIcon() 函数就会生效。
请看下面的代码:
#include <QApplication> #include <QLabel> #include <QPushButton> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel label("这是Label控件"); //没有父对象 label.setWindowTitle("Label控件作为顶级窗口"); label.setGeometry(100, 50, 360, 160); label.setAlignment(Qt::AlignCenter); label.show(); QPushButton btn; //没有父对象 btn.setWindowTitle("PushButton控件作为顶级窗口"); btn.setText("这是个大大的按钮"); btn.setGeometry(480, 50, 360, 160); btn.show(); return app.exec(); }
运行代码,会在距离显示器 x=100, y=50 的位置弹出两个窗口,
如下图所示:
可以发现,窗口和控件没有绝对的区别,控件也可以成为窗口,这取决于它有没有父对象。
相关文章推荐
- 在win10 x64下配置QT5.6.0 Mingw+opencv2.4.12
- Qt:基于Qt开发的开源小工具包:JQTools
- Pyqt 滚动条的小demo
- Windows7下安装Qt5.6时提示msvcp120.dll丢失的解决方案
- Pyqt print输出到控件中小demo
- QT入门,while parsing target library list: not well-formed (invalid token)解决
- Qt在pro中设置运行时库MT、MTd、MD、MDd,只适合VS版本的Qt
- qt 最小化托盘 菜单互斥
- Qt5给Excel添加批注
- Qt在Windows下的三种编程环境搭建
- Qt在pro中管理多个子项目(子工程)
- mqtt 学习
- QT5问题汇总
- Qt学习笔记:QMainWindow与QDockWidget
- Qt: can't find -lGL(Ubuntu16.04)
- Qt学习笔记:QMenuBar()、QMenu()和QAction()的使用
- QtChart-Qt官方绘图库安装与使用
- ubuntu 安装 qt
- QT运行发布的exe时无法读取并显示图片的解决办法
- Qt学习之路(58): 进程间交互