Qt6.2教程——2.介绍 Qt 中的 QWidgets、QMainWindow 和 QDialog

news2025/1/18 14:00:39

详细介绍 Qt 中的 QWidgets、QMainWindow 和 QDialog

Qt 是一个广受欢迎的跨平台 C++ GUI 库。在 Qt 中,创建图形用户界面的基本单元是 Widget。本文将详细介绍三个重要的 Widget 类:QWidget, QMainWindowQDialog,并比较它们的特点和用途。

QWidget:基础构建块

概述

QWidget 是 Qt 中所有用户界面元素的基类。从按钮到文本框,甚至包括窗口和对话框,所有这些都是 QWidget 的子类。QWidget 可以是可视化元素,也可以作为其他可视化元素的容器。

主要特性

  • 灵活性: 可以是单独的控件,如按钮,也可以是容纳其他控件的容器。
  • 可定制: 可以设置 QWidget 的大小、样式、背景颜色等。
  • 事件处理: 支持对各种事件(如鼠标点击和键盘输入)进行处理。

示例

#include <QApplication>
#include <QWidget>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QWidget window;
    window.setWindowTitle("Basic QWidget Example");
    window.resize(500, 300);

    window.show();
    return app.exec();
}

在这里插入图片描述

QMainWindow:构建复杂应用程序的框架

概述

QMainWindow 是专为需要菜单栏、工具栏、状态栏和中央窗口小控件的标准应用程序而设计的。它通常用作应用程序的主窗口。

主要特性

  • 组织结构: 提供一个中央窗口,该窗口通常包含应用程序的主要内容,以及周围的菜单栏、工具栏和状态栏。
  • Dock Widgets: 允许用户自定义窗口布局,通过可拖动的窗口小部件来组织内容。

示例

#include <QApplication>
#include <QMainWindow>
#include <QLabel>
#include <QStatusBar>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QMainWindow mainWindow;
    mainWindow.setWindowTitle("QMainWindow Example");

    QLabel *centralLabel = new QLabel("Central Widget");
    mainWindow.setCentralWidget(centralLabel);

    mainWindow.statusBar()->showMessage("Status Bar Message");

    mainWindow.show();
    mainWindow.resize(500, 300);
    return app.exec();
}

在这里插入图片描述

QDialog:交互式对话框

概述

QDialog 是用于创建对话框的类。对话框是一种特殊类型的窗口,通常用于短暂的任务和简短的通信。用户可以通过对话框输入或选择信息。

主要特性

  • 模态和非模态: 对话框可以是模态的(阻止用户与父窗口交互)或非模态的。
  • 标准按钮: `QDialog

` 可以包含标准按钮(如 OK 和 Cancel)。

示例

#include <QApplication>
#include <QDialog>
#include <QPushButton>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QDialog dialog;
    dialog.setWindowTitle("QDialog Example");

    QPushButton *button = new QPushButton("Close", &dialog);
    QObject::connect(button, &QPushButton::clicked, &dialog, &QDialog::accept);

    dialog.exec();
    return 0;
}

在这里插入图片描述

对比

  • 通用性: QWidget 是最通用的,可以作为创建其他控件或容器的基础;QMainWindow 特定于主窗口,具有菜单和工具栏;而 QDialog 主要用于创建对话框。
  • 复杂性: QMainWindow 通常比 QWidgetQDialog 更复杂,因为它包含更多的组件(如菜单栏、工具栏、状态栏和 dock widgets)。
  • 用途: QDialog 主要用于获取用户输入或显示信息;QMainWindow 通常用作应用程序的主界面;而 QWidget 可以用于这两者,并且是所有控件的基础。

总结

在 Qt 中,QWidget, QMainWindowQDialog 都是构建图形用户界面的重要部分。选择使用哪一个取决于你的具体需求:如果你需要一个复杂的主界面,使用 QMainWindow;如果你需要简单的输入和信息展示,使用 QDialog;对于其他通用目的和自定义控件,使用 QWidget

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

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

相关文章

设计模式之原型模式笔记

设计模式之原型模式笔记 说明Prototype(原型)目录UML原型模式示例类图RealizeType类(浅克隆)测试类 原型模式案例奖状类测试类 扩展(深克隆)学生类奖状类测试类 说明 记录下学习设计模式-原型模式的写法。 Prototype(原型) 意图:用原型实例指定创建对象的种类&#xff0c;并…

Spring之IOC容器从入门都手写源码

文章目录 一、IOC容器1、控制反转&#xff08;ioc&#xff09;2、依赖注入3、IoC容器在Spring的实现 二、基于XML管理Bean1、获取bean方式一、根据id获取方式二、根据类型获取方式三、根据id和类型获取bean 2、依赖注入之setter注入3、依赖注入之构造器注入4、特殊值处理5、为对…

基于llama模型进行增量预训练

目录 1、llama模型转换(pytorch格式转换为HuggingFace格式) 1.1、拉取Chinese-LLaMA-Alpaca项目 1.2、准备文件夹 1.3、下载llama官方原始模型 1.4、移动文件到指定位置 1.5、执行转换脚本 2、合并模型 2.1、下载Chinese-LLaMA-Plus-7B模型 2.2、下载chinese_alpaca_p…

【Leetcode60天带刷】day16二叉树—— 104.二叉树的最大深度 , 111.二叉树的最小深度,222.完全二叉树的节点个数

题目&#xff1a; 104. 二叉树的最大深度 给定一个二叉树&#xff0c;找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例&#xff1a; 给定二叉树 [3,9,20,null,null,15,7]&#xff0c; 3/ \9 20/ …

数字电路基础---寄存器

目录 数字电路基础---寄存器 1、寄存器简介 1.1、寄存器是如何工作的 2、实验任务 3、程序设计 3.1、模块设计 3.2、绘制波形图 4、编写代码 5、仿真验证 5.1、编写 TB 文件 5.2、仿真验证 6、总结 7、拓展训练 数字电路基础---寄存器 寄存器是构成时序逻辑最重要…

理解安卓的视图体系结构

原文链接 理解安卓的视图体系结构 当我们想要写一个页面的时候&#xff0c;通过一个Activity&#xff0c;然后调用其setContentView方法&#xff0c;把一个布局文件当作一个参数传递过去&#xff0c;然后一个页面就好了&#xff0c;但是除此之外&#xff0c;我们还需要与一些组…

【MySql】MySql索引的作用索引的理解

【MySql】MySql索引的作用&&索引的理解 文章目录 索引的作用认识磁盘MySql 与磁盘交互基本单位Page共识索引的理解主键有序问题理解单个Page理解多个Page页目录单页情况多页情况 索引的作用 索引是与效率挂钩的&#xff0c;所以没有索引&#xff0c;可能会存在问题 索…

从0到1搭建属于自己的Gitlab CI/CD平台

文章目录 持续集成(CI)持续交付(CD)Gitlab CI/CD功能和架构本地搭建GitLab CI/CD平台 MCNU云原生&#xff0c;文章首发地&#xff0c;欢迎微信搜索关注&#xff0c;更多干货&#xff0c;第一时间掌握&#xff01; CI和CD是软件开发中常用的缩写&#xff0c;分别代表持续集成&am…

【Unity】 HTFramework框架(四十五)【进阶篇】指令系统-自定义指令

更新日期&#xff1a;2023年6月19日。 Github源码&#xff1a;[点我获取源码] Gitee源码&#xff1a;[点我获取源码] 索引 指令系统1.使用指令系统2.自定义指令1.新建类 MyInstruction2.标记 CustomInstruction 特性3.编写指令的逻辑4.执行自定义指令5.自定义指令的参数6.结尾 …

C进阶 - 数组和指针

Declare an array manually VS malloc or calloc an array 用英文是因为有些东西得用他们的语言才能表达不失真 栈和堆 In C, a heap is a region of memory that is dynamically allocated during runtime. It is used to store variables and data structures that have a …

学习HCIP的day.14

目录 STP生成树协议 生成树协议 一、802.1D 1、根网桥 2、根端口 3、指定端口 4、非指定端口 5、接口状态 802.1D的收敛时间 802.1D算法的缺点 以上cost值的解释 二、PVST 三、PVST 四、快速生成树 五、MSTP/MST/802.1S STP生成树协议 网络三层架构…

南京企业所得税高怎么办?

南京企业所得税高怎么办&#xff1f; 《税筹顾问》专注于园区招商&#xff0c;您的贴身节税小能手&#xff0c;合理合规节税&#xff01; 众所周知&#xff0c;企业所得税是按利润来计算的&#xff0c;按照不同的利润阶梯计算适用的税率也会有所不同&#xff0c;那么当企业利润…

launch文件的编写及ROS配置文件的详细介绍

launch文件的编写及ROS配置文件的详细介绍 1 launch文件介绍及简单应用1.1 launch文件介绍1.2 launch文件简单应用 2 package.xml文件介绍及配置3 CMakeLists.txt文件介绍及配置 1 launch文件介绍及简单应用 1.1 launch文件介绍 根据ROS的架构和通信机制来看&#xff0c;ROS的…

讯飞星火大模型详细内测体验:它能否应对这些挑战?

名人说&#xff1a;一花独放不是春&#xff0c;百花齐放花满园。——《增广贤文》 作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、简要介绍二、分类问题测试0️⃣自我介绍1️⃣语言理解2️⃣知识问答3️⃣逻辑推…

Vue中如何进行文件转换与格式转换

Vue中如何进行文件转换与格式转换 在Web应用程序中&#xff0c;经常需要进行文件转换和格式转换。例如&#xff0c;将PDF文件转换为图像文件、将音频文件转换为不同的格式或将视频文件转换为不同的分辨率和编解码格式。Vue作为一种流行的前端框架&#xff0c;提供了许多实用工…

网络管理与维护(二)网络用户设置管理

网络用户设置管理 2.1 用户帐户安全管理 用户账户的分类 管理员帐户。拥有管理本台计算机的所有权限和权利。系统内置的Administrator用户帐户 和Administrators组帐户的成员就属于管理员帐户 标准帐户。通常分配给最终用户使用&#xff0c;适用于日常工作&#xff0c;对操作…

GeoServer中地图可视化提升利器之SLD知识简介

目录 前言 一、SLD简介 1、介绍 2、SLD的版本 3、SLD的Schema说明 二、SLD中相关知识解析 1、Scheme简要说明 2、一个SLD实例 总结 前言 在互联网上有很多精美的地图&#xff0c;在地图从shp或者gdb等矢量文件&#xff0c;经过设计人员的加工&#xff0c;配色&#xff0…

【论文阅读】Graph-less Collaborative Filtering

【论文阅读】Graph-less Collaborative Filtering 文章目录 【论文阅读】Graph-less Collaborative Filtering1. 来源2. 介绍3. 模型解读3.1 协同过滤3.2 模型3.2.1 对比知识精馏 3.2.2 自适应对比正则化3.2.3 SimRec的参数学习 4. 实验5. 总结 1. 来源 2023WWW CCFA原文地址co…

【Linux】linux | 服务响应慢、问题排查 | 带宽问题导致 | 网速

一、说明 1、项目使用云服务器&#xff0c;服务器配置&#xff1a;5M带宽、4核、32G&#xff0c;1T&#xff0c;CentOS7 2、CPU、内存、磁盘IO都没有达到瓶颈&#xff0c;猜测是带宽问题 3、应用比较多&#xff0c;应用中间件&#xff0c;十几个差不多 4、同时在线人数30 5、已…

“暗网议会”如今已成为现实

图片来源:Marcin Balcerzak 最近&#xff0c;“暗网议会”已经成为了网络犯罪分子试图证明自己影响力的最新流行语&#xff0c;安全内部人士对这个词也很感兴趣。 上周五&#xff0c;臭名昭著的亲俄黑客组织Killnet在其电报威胁帖子中使用了这个词语。随后&#xff0c;twitte…