<QT篇>2.desinger部件的使用(窗口)

本文以QTcreator为例,代码为c++

1.所有窗口

QWidget:所有部件的基类,可以作为通用的容器。

QMainWindow:主窗口,支持菜单栏、工具栏、状态栏等。

QDialog:对话框,通常用于模态交互。

QFrame:框架控件,用于划分界面或作为容器。

2.窗口详情

接下来我们详细分类说明每个窗口的作用和运用场景.

1.QWidget

构造函数:

QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
  • parent:父窗口部件。如果为 nullptr,表示是顶级窗口。
  • f:窗口标志,用于设置窗口特性(如无边框、置顶等)。

QWidget是所有部件的基类,几乎所有的控件和窗口都是直接或间接从QWidget 派生的。QWidget 本身可以作为一个通用的容器,也可以单独使用来显示内容.

1.它可以作为顶级窗口或子窗口。

QWidget可以作为单独页面,也可以作为主页面为主父类.也可以作为子窗口,以其他窗口为父类.运用场景很大,几乎你能想到的界面都可以由他作为底窗口.

2.可作为其他部件使用

因为它是所有部件的基类,所以我们可以将它认为母体,它可以衍生出我们想用到的部件,比如按钮,表格,标签等.在某些特定场景,可能是布局需要,或者是样式需要,无法直接使用按钮pushbutton,表格table~等,就可以利用widget的特性,直接将其修改成按钮或者其他部件属性.因此,它也具有槽函数等功能,可以直接建立.

3.可以自定义绘图

提供了 paintEvent(),允许开发者使用 QPainter 自定义绘图.我们可以利用此函数对widget的样式进行修改,在我们的基础界面中,widget是默认长方形的.我们可以修改其四边长度以及边角等.

2.QMainWindow

构造函数:

QMainWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
  • parent:指定父窗口,如果为空则为顶层窗口。
  • flags:窗口标志,例如无边框、工具窗口等。

 QMainWindow 是 Qt 框架中提供的一个主窗口类,它专门用于构建具有标准窗口布局的应用程序界面。相比于 QWidgetQMainWindow 提供了更多特定的功能,例如菜单栏、工具栏、状态栏、停靠窗口等。

1.标准主窗口布局

QMainWindow就相当于整个程序的主要工作页面,比如说wps的工作页面.

2.支持停靠功能

在mainwindow中,我们创建的其他部件或者特定窗口,是可以停靠在mainwindow上的,它支持同时出现多种窗口的情况,并且,这些停靠的窗口可以由我们自定义移动浮动等动作.

3.有清晰的布局

正如我们刚创建的这样,在它的界面有清晰明确的布局,我们可以直接利用其布局开始设计.

在这里我列举一下其主要栏的代码

setCentralWidget(QWidget *) //设置中央窗口

menuBar() //菜单栏

addToolBar(const QString &) //添加工具栏

statusBar() //状态栏

addDockWidget(Qt::DockWidgetArea, QDockWidget *) //添加停靠窗口

3. QDialog

QDialog是 Qt 框架中用于构建对话框的类,对话框是一种临时窗口,用于显示信息或与用户交互。

构造函数:

QDialog(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
  • parent:指定父窗口,如果为空则为顶层窗口。
  • flags:窗口标志,例如无边框、工具窗口等。
     

1.模态支持

可以理解为阻塞,

setModal(true)

当为true的时候,即为阻塞.阻塞之后,出现dialog窗口时,其他窗口无法交互,只能能dialog窗口关闭才能继续交互.相反,如果为非模态,则出现dialog后,其他界面依旧可以交互.

这种情况可用于确认窗口,当用户做出某个选项之后,可以弹出确认窗口进行确认-取消.只有点击这两个之后才能继续回到主页面进行下一步.如何回到主页面?

2.返回

QDialog提供了exec()方法进行返回操作,用来运行对话框并且返回结果操作.

3.灵活小巧

QDialog可以作用于任何界面,用于临时性的对话或者交互窗口,不会影响主窗口布局.且所占用内存小.

4.QFrame

QFrame是用于创建带边框的窗口或组件,也可以作为容器,它作为容器多数是用于布局管理和样式设计等,因为它具有可设计性.

构造函数: 

QFrame(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
  • parent:父控件,指定该 QFrame 所属的父窗口或控件。
  • f:窗口标志,用于设置窗口类型(如工具窗口、弹出窗口等)。

1.样式

可以设置边框样式(如凹陷、凸起、平面等)。

边框的宽度、形状和颜色都可以自定义。

对于这部分内容,后面我们可以在学习Qss样式表的时候详细学习.

2.容器

可以作为容器控件,承载其他控件.

可以用于分隔界面区域或装饰界面。

3.继承

是许多其他控件的基础类(如 QLabelQGroupBox 等)。

3.总结

综上,我给出我个人的一个小总结.对于一个单页面项目,我们可以直接创建mianwindow界面,在mainwindow界面进行其他操作.对于多界面项目,我们可以创建多个界面,以widget和mianwindow为主,mainwindow为主界面,widget为登录或者其他衍生界面.在这两个界面中我们插入多个frame作为容器进行界面样式设计,运用dialog进行确认或者交互窗口.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值