当前位置: 首页 > news >正文

Qt创建窗口选择的三个父类介绍 ----- QWidget、QMainWindow、QDialog

QWidget类

简介

QWidget是Qt中所有用户界面元素的基类。它提供了窗口的基本功能,并允许用户自定义窗口的外观和行为。QWidget可以包含其他QWidget子类的子窗口,从而实现复杂的用户界面。

特性

  • 提供了窗口的基本功能,包括绘制、事件处理、布局管理等。
  • 支持窗口的样式定制,可以通过样式表实现窗口的个性化外观。
  • 可以设置窗口的标题、图标、大小和位置等属性。
  • 支持窗口的布局管理,可以使用布局管理器来自动布局窗口中的子部件。
  • 支持窗口的事件处理,可以处理鼠标事件、键盘事件、定时器事件等。

主要接口

  • QWidget(QWidget *parent = nullptr):构造函数,用于创建QWidget对象。
  • void setWindowTitle(const QString &title):设置窗口的标题。
  • void setGeometry(int x, int y, int width, int height):设置窗口的位置和大小。
  • void resize(int width, int height):重新设置窗口的大小。
  • void move(int x, int y):移动窗口到指定位置。
  • void show():显示窗口。
  • void hide():隐藏窗口。
  • void close():关闭窗口。
  • void setLayout(QLayout *layout):设置窗口的布局管理器。
  • void setStyleSheet(const QString &styleSheet):设置窗口的样式表。

示例

#include <QWidget>
#include <QVBoxLayout>
#include <QPushButton>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 创建一个QWidget对象作为主窗口QWidget mainWindow;// 创建一个垂直布局管理器QVBoxLayout layout(&mainWindow);// 创建一个按钮QPushButton button("Click me");// 将按钮添加到布局管理器中layout.addWidget(&button);// 设置主窗口的布局mainWindow.setLayout(&layout);// 设置窗口的标题mainWindow.setWindowTitle("Main Window");// 显示主窗口mainWindow.show();return app.exec();
}

总结

QWidget是Qt中所有用户界面元素的基类,提供了窗口的基本功能,并允许用户自定义窗口的外观和行为。通过QWidget,可以方便地创建和管理用户界面,实现丰富的交互体验。



QMainWindow类

简介

QMainWindow是Qt中用于创建应用程序主窗口的特殊窗口类。它提供了丰富的布局和功能,包括菜单栏、工具栏、状态栏等,用于创建应用程序的主界面。

特性

  • 提供了应用程序的主要框架,包括菜单栏、工具栏和状态栏等。
  • 可以设置中心窗口部件,并自由布局其他子部件。
  • 支持自定义窗口的外观和行为,可以设置窗口的标题、图标、大小和位置等属性。
  • 支持窗口的样式定制,可以通过样式表实现窗口的个性化外观。

主要接口

  • QMainWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()):构造函数,用于创建QMainWindow对象。
  • void setCentralWidget(QWidget *widget):设置中心窗口部件。
  • void setMenuBar(QMenuBar *menuBar):设置菜单栏。
  • void addToolBar(QToolBar *toolbar):添加工具栏。
  • void setStatusBar(QStatusBar *statusBar):设置状态栏。
  • void setWindowTitle(const QString &title):设置窗口的标题。
  • void setWindowIcon(const QIcon &icon):设置窗口的图标。

示例

#include <QApplication>
#include <QMainWindow>
#include <QPushButton>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 创建一个QMainWindow对象QMainWindow mainWindow;// 创建一个按钮QPushButton *button = new QPushButton("Click me", &mainWindow);// 将按钮添加到中心窗口部件mainWindow.setCentralWidget(button);// 设置窗口的标题mainWindow.setWindowTitle("Main Window");// 显示主窗口mainWindow.show();return app.exec();
}

总结

QMainWindow是Qt中用于创建应用程序主窗口的特殊窗口类,提供了丰富的布局和功能,用于创建应用程序的主界面。通过QMainWindow,可以方便地创建和管理主界面的各个部件,实现功能丰富的用户界面。



QDialog 类

简介

QDialog 是 Qt 中用于显示对话框的类,它提供了一种简单的方法来创建模态对话框和非模态对话框。对话框通常用于与用户进行交互,如显示消息、获取输入、进行设置等。

特性
  • 支持模态和非模态对话框。
  • 可以设置对话框的标题、图标、大小和位置等属性。
  • 提供了丰富的内置对话框类型,如消息框、文件对话框、颜色选择对话框等。
  • 允许用户自定义对话框的内容和行为。
主要接口
  • QDialog(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::Dialog):构造函数,用于创建一个对话框对象。
  • void setWindowTitle(const QString &title):设置对话框的标题。
  • void setModal(bool modal):设置对话框是否为模态对话框。
  • void setSizeGripEnabled(bool enabled):设置对话框是否显示大小调整手柄。
  • void accept():关闭对话框并发出 accept() 信号,通常表示用户接受对话框的内容。
  • void reject():关闭对话框并发出 reject() 信号,通常表示用户取消或拒绝对话框的内容。
示例
#include <QApplication>
#include <QDialog>
#include <QVBoxLayout>
#include <QPushButton>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 创建一个对话框对象QDialog dialog;// 创建一个垂直布局管理器QVBoxLayout layout(&dialog);// 创建两个按钮QPushButton *okButton = new QPushButton("OK");QPushButton *cancelButton = new QPushButton("Cancel");// 将按钮添加到布局管理器中layout.addWidget(okButton);layout.addWidget(cancelButton);// 连接按钮的点击事件到对话框的 accept() 和 reject() 槽函数QObject::connect(okButton, &QPushButton::clicked, &dialog, &QDialog::accept);QObject::connect(cancelButton, &QPushButton::clicked, &dialog, &QDialog::reject);// 设置对话框的标题dialog.setWindowTitle("Dialog");// 显示对话框dialog.exec();return app.exec();
}
总结

QDialog 是 Qt 中用于显示对话框的类,它提供了方便的方法来创建和管理对话框,以及与用户进行交互。通过 QDialog,可以轻松地实现各种对话框,包括消息框、文件对话框、颜色选择对话框等,从而丰富了应用程序的功能和用户体验。


相关文章:

Qt创建窗口选择的三个父类介绍 ----- QWidget、QMainWindow、QDialog

QWidget类 简介 QWidget是Qt中所有用户界面元素的基类。它提供了窗口的基本功能&#xff0c;并允许用户自定义窗口的外观和行为。QWidget可以包含其他QWidget子类的子窗口&#xff0c;从而实现复杂的用户界面。 特性 提供了窗口的基本功能&#xff0c;包括绘制、事件处理、…...

论文翻译 - Defending Against Alignment-Breaking Attacks via Robustly Aligned LLM

论文链接&#xff1a;https://arxiv.org/pdf/2309.14348.pdf Defending Against Alignment-Breaking Attacks via Robustly Aligned LLM Abstract1 Introduction2 Related Works3 Our Proposed Method3.1 Threat Model3.2 Our Proposed Method3.3 Practical Designs3.4 Theoret…...

Kafka总结问题

Kafka Kafka Kafka Kafka的核心概念/ 结构 topoic Topic 被称为主题&#xff0c;在 kafka 中&#xff0c;使用一个类别属性来划分消息的所属类&#xff0c;划分消息的这个类称为 topic。topic 相当于消息的分配标签&#xff0c;是一个逻辑概念。主题好比是数据库的表&#xff0…...

【RPG Maker MV 仿新仙剑 战斗场景UI (八)】

RPG Maker MV 仿新仙剑 战斗场景UI 八 状态及装备场景代码效果 状态及装备场景 本计划在战斗场景中直接制作的&#xff0c;但考虑到在战斗场景中加入太多的窗口这不太合适&#xff0c;操作也繁琐&#xff0c;因此直接使用其他场景。 代码 Pal_Window_EquipStatus.prototype.…...

【PyQt】18 -菜单等顶层操作

顶层界面的使用 前言一、菜单栏1.1 代码1.2 运行结果 二、工具栏2.1 代码几种显示方法 2.2 运行结果 三、状态栏3.1 代码3.2 运行结果 总结 前言 1、介绍顶层菜单栏目的使用&#xff0c;但没有陆续绑定槽函数。 2、工具栏 3、状态栏 一、菜单栏 1.1 代码 #Author &#xff1a…...

线性代数基础概念和在AI中的应用

基本概念 线性代数是数学的一个分支&#xff0c;专注于向量、向量空间&#xff08;也称为线性空间&#xff09;、线性变换和矩阵的研究。这些概念在数据科学、人工智能、工程学和物理学等多个领域都有广泛应用。以下是这些基本概念的详细解释和它们在数据处理和AI中的应用。 …...

elasticsearch _cat/indices docs.count is different than <index>/_count

今天遇到一个问题&#xff0c;kibana中看到文档数与下面语句查询到的不同 GET /_cat/count/jiankunking_xxxxx_product_expand_test?v GET /jiankunking_xxxxx_product_expand_test/_search?track_total_hitstrue语句查询结果 epoch timestamp count 1711433785 06:16…...

关系型数据库mysql(7)sql高级语句

目录 一.MySQL常用查询 1.按关键字&#xff08;字段&#xff09;进行升降排序 按分数排序 &#xff08;默认为升序&#xff09; 按分数升序显示 按分数降序显示 根据条件进行排序&#xff08;加上where&#xff09; 根据多个字段进行排序 ​编辑 2.用或&#xff08;or&…...

计算机网络——网络基础1

网络基础一 1.初识网络 ​ 网卡也是一种文件&#xff0c;所以对于网络的编程也是一种文件操作&#xff1b; ​ 早期由于不同的计算机之间要根据数据进行协作&#xff0c;但是计算机之间是独立的&#xff0c;所以使用了光驱或者软盘之类的进行协作&#xff1b;对于将计算机连…...

ERDUnet: An Efficient Residual Double-codingUnet for Medical Image Segmentation

ERDUnet:一种用于医学图像分割的高效残差双编码单元 摘要 医学图像分割在临床诊断中有着广泛的应用,基于卷积神经网络的分割方法已经能够达到较高的准确率。然而,提取全局上下文特征仍然很困难,而且参数太大,无法临床应用。为此,我们提出了一种新的网络结构来改进传统的…...

vue响应式基础

声明响应式状态​ ref()​ 在组合式 API 中&#xff0c;推荐使用 ref() 函数来声明响应式状态&#xff1a; import { ref } from vueconst count ref(0) ref() 接收参数&#xff0c;并将其包裹在一个带有 .value 属性的 ref 对象中返回&#xff1a; const count ref(0)c…...

每天上万简历,录取不到1%!阿里腾讯的 offer 都给了哪些人?

三月天杨柳醉春烟~正是求职好时节~ 与去年秋招的冷淡不同&#xff0c;今年春招市场放宽了许多&#xff0c;不少企业纷纷抛出橄榄枝&#xff0c;各大厂的只差把“缺人”两个字写在脸上了。 字节跳动技术方向开放数10个类型岗位&#xff0c;研发需求占比60%&#xff0c;非研发新增…...

外包干了20天,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;21年通过校招进入杭州某软件公司&#xff0c;干了接近2年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了2年的功能测试…...

4核8G云服务器,阿里云要多少钱?

阿里云4核8G服务器优惠价格955元一年&#xff0c;配置为ECS通用算力型u1实例&#xff08;ecs.u1-c1m2.xlarge&#xff09;4核8G配置、1M到3M带宽可选、ESSD Entry系统盘20G到40G可选&#xff0c;CPU采用Intel(R) Xeon(R) Platinum处理器&#xff0c;阿里云活动链接 aliyunfuwuq…...

数学分析复习:振荡型级数的收敛判别

文章目录 振荡型级数的收敛判别 本篇文章适合个人复习翻阅&#xff0c;不建议新手入门使用 振荡型级数的收敛判别 直观上&#xff0c;振荡型级数说的是级数各项有正有负&#xff0c;求和的时候可以相互抵消&#xff0c;故可能收敛 命题&#xff1a;Abel求和公式 设复数列 { …...

阿里CICD流水线Docker部署,将阿里镜像私仓中的镜像部署到服务器中

文章目录 阿里CICD流水线Docker部署&#xff0c;将阿里镜像私仓中的镜像部署到服务器中一、CICD流水线的初步使用可以看我之前的两篇文章二、添加部署任务&#xff0c;进行Docker部署&#xff0c;创建一个阿里的试用主机1、选择主机部署&#xff0c;并添加服务主机2、创建免费体…...

并发VS并行

参考文章 面试必考的&#xff1a;并发和并行有什么区别&#xff1f; 并发&#xff1a;一个人同时做多件事&#xff08;射击游戏队友抢装备&#xff09; 并行&#xff1a;多人同时处理同一件事&#xff08;射击游戏敌人同时射击对方&#xff09;...

C语言经典例题(8) --- 进制A+B、网购、及格分数、最高分数、计算一元二次方程

文章目录 1.进制AB2.网购3.及格分数4.最高分数5.计算一元二次方程 1.进制AB 题目描述&#xff1a; 输入一个十六进制数a&#xff0c;和一个八进制数b&#xff0c;输出ab的十进制结果&#xff08;范围-231~231-1&#xff09;。 输入描述&#xff1a; 一行&#xff0c;一个十六…...

两区域二次调频风火机组,麻雀启发式算法改进simulink与matlab联合

区域1结果 区域2结果 红色曲线为优化后结果〔风火机组二次调频〕...

自动驾驶国际标准ISO文件

Coordinate system&#xff1a;Road vehicles — Vehicle dynamics and road-holding ability — Vocabulary...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...