Qt 中的QMainWindow、QWidget 和 QDialog 基类

在 Qt 中,QMainWindowQWidgetQDialog 都是非常重要的基类,它们在 GUI 开发中有着不同的用途和特点,下面为你详细介绍:

1. QWidget

  • 简介
    • QWidget 是所有用户界面对象的基类,被称为基础窗口部件。在 Qt 的控件层次结构中处于核心地位,几乎所有可视化的 Qt 控件都是从 QWidget 直接或间接派生而来的。
  • 特点
    • 独立性:可以作为一个独立的窗口显示,也可以作为子部件嵌入到其他窗口中。当作为独立窗口显示时,它就是一个最简单的窗口;当作为子部件时,可用于构建复杂的用户界面。
    • 灵活性:由于是基类,所以非常灵活,你可以根据需求自定义各种控件和界面布局。
  • 使用场景
    • 自定义控件:当你需要创建一个全新的、具有特定功能和外观的控件时,可以继承 QWidget 类,并重写相应的事件处理函数和绘制函数。
    • 简单窗口:在一些简单的应用程序中,若只需要一个基本的窗口来显示内容,可直接使用 QWidget
  • 示例代码
#include <QApplication>
#include <QWidget>int main(int argc, char *argv[])
{QApplication a(argc, argv);QWidget window;window.show();return a.exec();
}

2. QMainWindow

  • 简介
    • QMainWindow 是一种特殊的 QWidget,它为创建主应用程序窗口提供了一个框架,具有预定义的布局结构。
  • 特点
    • 标准布局:包含菜单栏、工具栏、状态栏、中央窗口部件和停靠窗口等标准组件。这种布局结构使得创建具有典型 Windows 应用程序风格的界面变得非常方便。
    • 功能完整性:提供了一套完整的用户界面元素,适合用于开发大型、功能复杂的应用程序。
  • 使用场景
    • 主应用程序窗口:在大多数需要有菜单栏、工具栏和状态栏等元素的应用程序中,如文本编辑器、图像编辑器等,通常使用 QMainWindow 作为主窗口。
  • 示例代码
#include <QApplication>
#include <QMainWindow>
#include <QMenuBar>
#include <QMenu>
#include <QAction>int main(int argc, char *argv[])
{QApplication a(argc, argv);QMainWindow mainWindow;// 创建菜单栏QMenuBar *menuBar = mainWindow.menuBar();QMenu *fileMenu = menuBar->addMenu("File");QAction *exitAction = fileMenu->addAction("Exit");// 连接退出动作的信号和槽QObject::connect(exitAction, &QAction::triggered, &a, &QApplication::quit);mainWindow.show();return a.exec();
}

3. QDialog

  • 简介
    • QDialog 也是 QWidget 的子类,主要用于创建对话框窗口,用于与用户进行简单的交互或获取用户输入。
  • 特点
    • 模态和非模态:对话框可以是模态的或非模态的。模态对话框会阻塞应用程序的其他部分,直到对话框被关闭;非模态对话框则允许用户在对话框打开的同时与应用程序的其他部分进行交互。
    • 临时性:通常用于短期的交互任务,如设置参数、选择文件等。
  • 使用场景
    • 用户交互:当需要获取用户的一些信息或让用户进行某些选择时,如登录对话框、文件选择对话框等,可使用 QDialog
  • 示例代码
#include <QApplication>
#include <QDialog>
#include <QPushButton>
#include <QVBoxLayout>int main(int argc, char *argv[])
{QApplication a(argc, argv);QDialog dialog;QPushButton *okButton = new QPushButton("OK", &dialog);QVBoxLayout *layout = new QVBoxLayout(&dialog);layout->addWidget(okButton);// 连接按钮点击信号和对话框关闭槽QObject::connect(okButton, &QPushButton::clicked, &dialog, &QDialog::accept);dialog.exec();  // 以模态方式显示对话框return a.exec();
}

总结

  • QWidget 是最基础的类,提供了最大的灵活性,适用于自定义控件和简单窗口。
  • QMainWindow 适用于创建主应用程序窗口,具有标准的布局结构,方便开发功能复杂的应用。
  • QDialog 主要用于创建临时性的交互窗口,支持模态和非模态显示。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT项目——天气预报

文章目录 前言一、项目介绍二、项目基础知识1. 软件开发网络通信架构1.1 CS架构 / BS架构1.1.1 CS架构&#xff08;客户端-服务器架构&#xff09;1.1.2 BS架构&#xff08;浏览器-服务器架构&#xff09; 1.2 HTTP 基本概念 2. QT 下 HTTP 编程2.1 类的解析2.2 示例程序 3. JS…

最优化方法-牛顿法

牛顿法 泰勒级数 泰勒级数展开 $$ \begin{aligned} f(x)&\lim\limits_{n\rightarrow \infin}\sum\limits_{i1}n\frac{1}{n!}f{(n)}(x_0)(x-x_0)^n\ &f(x_0)f’(x_0)(x-x_0)\frac{f’(x_0)}{2!}(x-x_0)2\cdots\frac{1}{n!}fn(x_0)(x-x_0)^n\ &\quad~ O\left[(x-x_…

论文笔记(七十二)Reward Centering(二)

Reward Centering&#xff08;二&#xff09; 文章概括摘要2 简单的奖励中心 文章概括 引用&#xff1a; article{naik2024reward,title{Reward Centering},author{Naik, Abhishek and Wan, Yi and Tomar, Manan and Sutton, Richard S},journal{arXiv preprint arXiv:2405.0…

halcon机器视觉深度学习对象检测,物体检测

目录 效果图操作步骤软件版本halcon参考代码本地函数 get_distinct_colors()本地函数 make_neighboring_colors_distinguishable() 效果图 操作步骤 首先要在Deep Learning Tool工具里面把图片打上标注文本&#xff0c; 然后训练模型&#xff0c;导出模型文件 这个是模型 mod…

MySQL修改JSON格式数据示例

最近发现有个数据是用JSON格式直接存到表格里面的&#xff0c;大概就是下面这样的 然后需要修改里面某个属性的值&#xff0c;一开始我想的是 REPLACE 替换 UPDATE test_1 SET content REPLACE(content, {"age": 15, "name": "w5"}, {"ag…

第4章 信息系统架构(二)

4.2 系统架构 信息系统架构是一种体系结构&#xff0c;它反映了一个组织信息系统的各个组成部分之间的关系&#xff0c;以及信息系统与相关业务、信息系统与相关技术之间的关系。 4.2.1 架构定义 对于大规模的复杂系统来说&#xff0c;对总体的系统结构设计比起对计算算法和…

AI 时代:探索大语言模型与核心技术

引言 在当今科技快速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;正成为推动创新和变革的重要力量。从能够理解和生成自然语言的大语言模型&#xff08;LLM&#xff09;&#xff0c;到具有自我学习能力的生成式预训练转换器&#xff08;GPT&#xff09;&#xf…

Python----数据结构(单链表:节点,是否为空,长度,遍历,添加,删除,查找)

一、链表 链表是一种线性数据结构&#xff0c;由一系列按特定顺序排列的节点组成&#xff0c;这些节点通过指针相互连接。每个节点包含两部分&#xff1a;元素和指向下一个节点的指针。其中&#xff0c;最简单的形式是单向链表&#xff0c;每个节点含有一个信息域和一个指针域&…

10、k8s对外服务之ingress

service和ingress的作用 service的作用 NodePort&#xff1a;会在每个节点开放一个端口&#xff0c;端口号30000-32767。 也是只能用于内网访问&#xff0c;四层转发。实现负载均衡。不能基于域名进行访问。 clusterip&#xff1a;service的默认类型&#xff0c;只能在集群…

Linux-ubuntu系统移植之Uboot启动流程

Linux-ubuntu系统移植之Uboot启动流程 一&#xff0c;Uboot启动流程1.Uboot的两阶段1.1.第一阶段1.11.硬件初始化1.12.复制 U-Boot 到 RAM1.13.跳转到第二阶段 1.2.第二阶段1.21.C 语言环境初始化1.22. 硬件设备初始化1.23. 加载环境变量1.24. 显示启动信息1.25. 等待用户输入&…

H3C交换机路由器防火墙FTP/TFTP服务器搭建。

软件介绍。 3CDaemon 2.0 - Download 3CDaemon 是一款集成了多种网络服务功能的工具软件&#xff0c;主要用于网络管理和文件传输&#xff0c;支持TFTP、FTP、Syslog等多种协议&#xff0c;广泛应用于网络设备的配置和管理。 1. 主要功能 TFTP服务器&#xff1a;支持TFTP协议…

Docker Mysql 数据迁移

查看启动命令目录映射 查看容器名称 docker ps查看容器的启动命令 docker inspect mysql8.0 |grep CreateCommand -A 20如下图所示:我这边是把/var/lib/mysql 目录映射到我宿主机的/mnt/mysql/data目录下,而且我的数量比较大使用方法1的话时间比较久,所以我采用方法2 如果没…

[Windows] WPS 2024冬季更新版(版本号19770)

[Windows] WPS 2024冬季更新版 链接&#xff1a;https://pan.xunlei.com/s/VOJQrS4UCz5639Oan7pu1X84A1?pwdg8ad# WPS灵犀正式上线DeepSeek R1&#xff01;告别服务器超时&#xff0c;办公效率飙升300%&#xff01; 2025年2月14日&#xff0c;WPS官方宣布全面接入DeepSeek …

图解循环神经网络(RNN)

目录 1.循环神经网络介绍 2.网络结构 3.结构分类 4.模型工作原理 5.模型工作示例 6.总结 1.循环神经网络介绍 RNN&#xff08;Recurrent Neural Network&#xff0c;循环神经网络&#xff09;是一种专门用于处理序列数据的神经网络结构。与传统的神经网络不同&#xff0c…

【队列】循环队列(Circular Queue)详解

文章目录 一、循环队列简介二、循环队列的判空和判满三、循环队列的实现leetcode 622. 设计循环队列 一、循环队列简介 在实际开发中&#xff0c;队列是一种常用的数据结构&#xff0c;而循环队列&#xff08;Circular Queue&#xff09;则一般是一种基于数组实现的队列&#x…

vmware虚拟机Ubuntu Desktop系统怎么和我的电脑相互复制文件、内容

1、先安装vmware workstation 17 player&#xff0c;然后再安装Ubuntu Desktop虚拟机&#xff0c;然后再安装vmware tools&#xff0c;具体可以参考如下视频&#xff1a; VMware虚拟机与主机实现文件共享&#xff0c;其实一点也不难_哔哩哔哩_bilibili 2、本人亲自试过了&…

Netty入门详解

引言 Netty 是一个基于 Java 的高性能、异步事件驱动的网络应用框架&#xff0c;用于快速开发可维护的高性能网络服务器和客户端。它提供了一组丰富的 API&#xff0c;使得开发人员能够轻松地处理各种网络协议&#xff0c;如 TCP、UDP 等&#xff0c;并且支持多种编解码方式&a…

DeepSeek 助力 Vue 开发:打造丝滑的点击动画(Click Animations)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

Spring-GPT智谱清言AI项目(附源码)

一、项目介绍 本项目是Spring AI第三方调用整合智谱请言&#xff08;官网是&#xff1a;https://open.bigmodel.cn&#xff09;的案例&#xff0c;回答响应流式输出显示&#xff0c;这里使用的是免费模型&#xff0c;需要其他模型可以去 https://www.bigmodel.cn/pricing 切换…

DeepSeek智能测试知识库助手PRO版:多格式支持+性能优化

前言 测试工程师在管理测试资产时,需要面对多种文档格式、大量文件分类及知识库的构建任务。为了解决这些问题,我们升级了 DeepSeek智能测试知识库助手,不仅支持更多文档格式,还加入了 多线程并发处理 和 可扩展格式支持,大幅提升处理性能和灵活性。 主要功能亮点: 多格…