六、新建窗体时,几种窗体的区别

news2025/4/25 12:27:29

新建窗体时,会有几种类型的选项,很多同学不明白其中的意思,我们在本章节中详细介绍一下几种窗体的区别。

窗体的类型分以下几种

Dialog with Buttons Bottom 带按钮的对话框,按钮在底部

Dialog with Buttons Right 带按钮的对话框,按钮在右侧

Dialog with Buttons 无按钮的对话框

Main Window 主窗体 带菜单栏、状态栏等部件

Widget 部件窗体(窗体容器)

以上几种窗体的区别:

Dialog(对话框窗体):

Dialog 是一种特殊的窗口,通常用于在应用程序中执行特定任务、获得用户输入或显示某种信息。

对话框可以是模态的(阻塞用户与应用程序的交互,直到对话框关闭)或非模态的(允许用户与应用程序的其他部分交互)。

常见的对话框包括文件对话框、颜色选择对话框、消息框等。

Qt中提供了 QDialog 类,它是对话框窗口的基类。

MainWindow 和 Widget 比较类似,但它们有一些区别,主要取决于它们在应用程序中的角色和使用场景。

MainWindow(主窗体):

MainWindow 是Qt框架中的一个特殊类,通常用于表示应用程序的主窗口。

主窗口是应用程序的主要用户界面窗口,通常包含菜单栏、工具栏、状态栏和中央工作区等。

MainWindow 继承自 QMainWindow 类,它提供了许多用于创建典型主窗口的功能和方法。

通常,应用程序的整体结构和布局由 MainWindow 类来定义,包括主窗口的外观和交互。

Widget(部件窗体):

Widget 是一个泛指的术语,用于描述用户界面中的各种元素,从简单的按钮和文本框到复杂的自定义部件。

在Qt中,QWidget 是所有用户界面部件的基类,包括按钮、文本框、标签等。

通常,Widget 是应用程序中的一个小组件,可以作为 MainWindow 中的子部件或独立存在。

QWidget 类提供了创建和管理窗口部件的基本功能,但它本身不是主窗口。

MainWindow 通常是应用程序的主窗口(约定俗成的规则),而 Widget 则是用于构建和组织主窗口中的各种用户界面元素的基本部件。在一个典型的应用程序中,你可能会创建一个主窗口(MainWindow)来容纳和管理整个应用程序的结构,而在主窗口内使用多个小部件(Widget)来构建具体的用户界面。

在Qt中,MainWindow 和 Widget 实际上是非常相似的,因为 MainWindow 本质上也是继承自 QWidget。MainWindow 是 QWidget 的一个子类,它提供了一些额外的功能,特别是为了创建应用程序的主窗口。

主要的区别在于 MainWindow 更适合作为应用程序的主窗口,它预先包含了一些标准的部件,如菜单栏、工具栏和状态栏。这使得创建具有标准用户界面元素的主窗口变得更加方便。

使用 MainWindow 的情况:

cpp

#include

class MyMainWindow : public QMainWindow {

Q_OBJECT

public:

MyMainWindow(QWidget *parent = nullptr);

// 可以添加特定于主窗口的功能和控件...

};

使用 Widget 的情况:

cpp

#include

class MyWidget : public QWidget {

Q_OBJECT

public:

MyWidget(QWidget *parent = nullptr);

// 适用于一般的窗口,不包含主窗口的额外功能...

};

在许多情况下,你可以根据需求选择使用 MainWindow 或 Widget。如果你的应用程序只需要一个简单的窗口,没有额外的主窗口功能,那么使用 Widget 完全是可以的。但如果你需要一个具有标准主窗口功能的窗口,例如带有菜单栏和工具栏的窗口,那么使用 MainWindow 会更方便。

以上的内容不知道是不是把同学们搞蒙了,下边我用一句人话总结:

MainWindowt和Widget类型的窗体都是继承自QWidget,只不过MainWindow对应的QMainWindow又在QWidget基础上做了一层封装扩展,带了如菜单栏、工具栏和状态栏等类。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1382151.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java SE语法篇】8.面向对象三大特征——封装、继承和多态

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 文章目录 1. 封装1.1 封装的概念1.2 为什么封装1.3 封装的实现…

Vue基知识四

本文对前边几章所学习的内容,以案例的形式做一个总结 一 TodoList案例 即待办事项案例,效果如下 1.1 组件化编码流程(通用) 这是编码时的通用流程,以后也可以按照这个流程来写代码(熟悉后这个流程的顺…

Flutter开发进阶之动画

Flutter开发进阶之动画 在Flutter中,动画是至关重要的一个部分,它能够为应用程序提供更加丰富和生动的用户体验,Flutter中的动画系统是UI框架的核心功能之一,也是开发者学习Flutter框架的重要部分,由于动画原理在所有…

Python基本语法与变量的相关介绍

python基本语法与变量 python语句的缩进 Python代码块使用缩进对齐表示代码逻辑,Python每段代码块缩进的空白数量可以任意,但要确保同段代码块语句必须包含相同的缩进空白数量。建议在代码块的每个缩进层次使用单个制表符或两个空格或四个空格 , 切记不…

GPU云服务器使用教程、运行YOLOV5项目并连接到本地VSCode(Pycharm)

编程如画,我是panda! 之前已经教过大家如何在自己的电脑中配置Pytorch深度学习环境,但是有些小伙伴没有英伟达的GPU,所以用CPU的话训练模型会比较慢,所以这次出一期使用GPU云服务器的教程。 码字不易,如果对…

金南瓜SECS/GEM发送event、VID

金南瓜SECS/GEM发送事件(CEID)很简单,只需一步就完成。 最重要是简单易懂,任何人一看就上手。无需懂得内部逻辑,以及一大堆的导入问题。 代码如下 C#的代码: // 扫码成功 private void buttonReadBarco…

一个简易的PHP论坛系统

一个简易的PHP论坛系统 php课程设计,毕业设计 预览 技术 bootstrap 4.x jquery css php mysql 5.7 目录结构 登录 管理员 admin/123456 测试用户 user1/123456 更多文章和源码获取查看

51-13 多模态论文串讲—BEiT v3 论文精读

BEIT-3的核心思想是将图像建模为一种语言,这样我们就可以对图像、文本以及图像-文本对进行统一的mask modeling。Multi-way transformer模型可以有效地完成不同的视觉和视觉语言任务,使其成为通用建模的一个有效选择。 同时,本文也对多模态大…

深入 Move 生态,探秘铭文热潮背后的思考

Move 语言是 Meta(Facebook)在 2018 年开发的新一代智能合约编程语言。回顾过去的一年,Aptos 与 Sui 主网上线,为整个 Web3 开启了下一个十亿用户服务的新征程。Rooch、Initia、MoveMent 等多条使用 Move 语言的区块链网络涌现&am…

边缘计算的舞台,挑战与机遇相伴

目录 前言 边缘计算保卫战:数据宝藏的隐藏与探索 稳如磐石:保障你的边缘计算宝藏安稳运行! 打破时间的桎梏:为边缘计算注入超快速度与实时表演 边缘计算:应对多样性和异构性的酷炫策略大揭秘 边缘计算:释…

MySQL面试题 | 06.精选MySQL面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

Spring Boot - JaCoCo Code Coverage

文章目录 概述如何集成pom添加插件Code Demo排除不相关的类CI/CD中使用完整POM 概述 JaCoCo(Java Code Coverage)是一个开源的Java代码覆盖率工具,它主要用于评估Java程序的测试完整性。通过跟踪测试过程中执行的代码,JaCoCo能够…

【Python数据可视化】matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图

文章传送门 Python 数据可视化matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值matplotlib之增加图形内容&#x…

读元宇宙改变一切笔记07_硬件与互操作性(上)

1. 元宇宙的头号入口 1.1. 元宇宙最令人兴奋的地方在于,我们可以借此开发用来访问、渲染和操纵它的新设备 1.1.1. App Newton于1993年发布,是世界上第一款掌上电脑 1.2. 功能超强大又轻巧的AR和沉浸式VR头显 1.2.1.…

AI智能创作软件,颠覆你的写作体验

你是否想过,有一天,文字创作不再受限于人的思维和表达能力?AI智能文章创作就是这样一个神奇的存在。它运用先进的自然语言处理技术,通过对大量数据的深度学习,根据需要自动生成文章。你只需输入关键词或主题&#xff0…

【天龙八部】攻略day6

关键字: 灵武、寻宝要求、雁门 1】灵武选择 西凉枫林,锦带,短匕 白溪湖,明镜,双刺 竹海,玉钩,锁甲 2】楼兰寻宝需求 等级80级,40级前6本心法 3】雁门奖励 简单35*4元佑碎金 普…

机器学习扩散模型简介

一、说明 扩散模型的迅速崛起是过去几年机器学习领域最大的发展之一。在这本易于理解的指南中了解您需要了解的有关扩散模型的所有信息。 扩散模型是生成模型,在过去几年中越来越受欢迎,这是有充分理由的。仅在 2020 年代发布的几篇开创性论文就向世界…

强化学习应用(二):基于Q-learning的物流配送路径规划研究(提供Python代码)

一、Q-learning算法简介 Q-learning是一种强化学习算法,用于解决基于马尔可夫决策过程(MDP)的问题。它通过学习一个值函数来指导智能体在环境中做出决策,以最大化累积奖励。 Q-learning算法的核心思想是使用一个Q值函数来估计每…

Docker实战10|实现volum数据卷

上一篇文章中,仔细讲解了Docker是如何改变当前的root文件系统以及mount等操作。 本文继续讲解Docker是如何实现Volum数据卷的。 实现Volume数据卷 获取代码 git clone https://gitee.com/mjreams/docker.git 上一小节介绍了如何使用AUFS包装busybox&#xff0c…

【Python】使用tkinter设计开发Windows桌面程序记事本(5)

上一篇:【Python】使用tkinter设计开发Windows桌面程序记事本(4)-CSDN博客 下一篇:待羽翼丰满之时,必将是文章更新之日! 作者发炎 本篇文章继承了前面四篇文章,并且实现了新建、保存、另存、打…