Qt 创建窗口类的介绍

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

常用的窗口类有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类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值