常用的窗口类有3个:
在创建Qt窗口的时候,需要让自己的窗口类继承下面三个窗口类的其中一个:
QWidget
所有窗口类的基类
Qt中的控件(按钮、输入框、单选框...)也属于窗口,基类都是QWidget
可以内嵌到其他窗口的内部 - 无边框(需要给该窗口指定父窗口)
可以作为独立的窗口显示 - 有边框 (不能给该窗口指定父窗口)
Qt 中所有控件的基类
举个例子:选择新建项目,右键点击 add new

选择设计师界面类
选择widget
任意取名
完成
随机加几个控件:

转换到编辑里 . h文件 可以看到基类为 QWidget

main.cpp里面显示窗口

对mainwindow.cpp进行如下更改

按ctrl+R,出现两个窗口

学习一下怎么注释
用另一种方式,起先还出错了,一看错误原来是括号用成中文了
修改后成功了,看看发生了什么!之前的两个窗口似乎是融合在一起了,跟上面对比着看,是没有show当前的窗口,于是这些都内嵌到了大窗口,

可以得出什么结论呢?要注意看注释内容~

这里插一下窗口的显示
-
内嵌窗口
依附于某一个大的窗口,作为了大窗口的一部分
大窗口就是这个内嵌窗口的父窗口
父窗口显示的时候,内嵌的窗口也就被显示出来了
-
不内嵌窗口
这类窗口有边框,有标题栏
需要调用函数才可以显示
// QWidget 是所有窗口类的基类,调用这个提供的show()方法就可以显示将任何窗口显示出来
void QWidget::show(); //显示当前窗口和它的子窗口
QDialog(QWidget的子类)
对话框窗口类
模态和非模态两种显示方式
不能内嵌到其他窗口中,只能独立显示

依旧是项目右键add new

Dialog对应的选项有三个,按次序:按钮在底部,按钮在右边,取消按钮,这次选择第三个,然后直接按下一步,到完成
添加一些按钮进行识别

打开 mainwindow.cpp 要记得加头文件

先差一个小话题:我推测这个if注释就是如果#if后面跟的是0,这段就注释,直接执行#else部分,如果跟的是1,就执行if部分,跳过#else部分

编辑后运行一下
非模态:

模态:

运行后出现两个子窗口,发现Form窗口是动不了的, 而且主窗口mainwindow不显示出来,这是因为啊,当mainwindow构造函数走完之后,主窗口才会显示,说明现在的构造函数没有走完,他阻塞在了exec这个函数上,导致主窗口不能显示,当把模态窗口关掉之后,阻塞就消失了,就可以打开主窗口了,此时Form窗口又可以移动了
QMainWindow
主窗口类,跟QWidget是父子关系
可以包含菜单栏、工具栏、状态栏
不能内嵌到其他窗口中,有自己的边框,独立使用

MainWindow 父类就是QMainWindow类型

本文介绍了Qt中的三种窗口类:QWidget作为所有窗口类和控件的基类,可作为独立窗口或内嵌窗口;QDialog是模态和非模态对话框,不能内嵌;QMainWindow适合构建带有菜单栏、工具栏的主窗口。通过实例展示了窗口的显示和继承关系。
4144

被折叠的 条评论
为什么被折叠?



