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中所有用户界面元素的基类。它提供了窗口的基本功能,并允许用户自定义窗口的外观和行为。QWidget可以包含其他QWidget子类的子窗口,从而实现复杂的用户界面。 特性 提供了窗口的基本功能,包括绘制、事件处理、…...
论文翻译 - Defending Against Alignment-Breaking Attacks via Robustly Aligned LLM
论文链接: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 被称为主题,在 kafka 中,使用一个类别属性来划分消息的所属类,划分消息的这个类称为 topic。topic 相当于消息的分配标签,是一个逻辑概念。主题好比是数据库的表࿰…...
【RPG Maker MV 仿新仙剑 战斗场景UI (八)】
RPG Maker MV 仿新仙剑 战斗场景UI 八 状态及装备场景代码效果 状态及装备场景 本计划在战斗场景中直接制作的,但考虑到在战斗场景中加入太多的窗口这不太合适,操作也繁琐,因此直接使用其他场景。 代码 Pal_Window_EquipStatus.prototype.…...
【PyQt】18 -菜单等顶层操作
顶层界面的使用 前言一、菜单栏1.1 代码1.2 运行结果 二、工具栏2.1 代码几种显示方法 2.2 运行结果 三、状态栏3.1 代码3.2 运行结果 总结 前言 1、介绍顶层菜单栏目的使用,但没有陆续绑定槽函数。 2、工具栏 3、状态栏 一、菜单栏 1.1 代码 #Author :…...
线性代数基础概念和在AI中的应用
基本概念 线性代数是数学的一个分支,专注于向量、向量空间(也称为线性空间)、线性变换和矩阵的研究。这些概念在数据科学、人工智能、工程学和物理学等多个领域都有广泛应用。以下是这些基本概念的详细解释和它们在数据处理和AI中的应用。 …...
elasticsearch _cat/indices docs.count is different than <index>/_count
今天遇到一个问题,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.按关键字(字段)进行升降排序 按分数排序 (默认为升序) 按分数升序显示 按分数降序显示 根据条件进行排序(加上where) 根据多个字段进行排序 编辑 2.用或(or&…...
计算机网络——网络基础1
网络基础一 1.初识网络 网卡也是一种文件,所以对于网络的编程也是一种文件操作; 早期由于不同的计算机之间要根据数据进行协作,但是计算机之间是独立的,所以使用了光驱或者软盘之类的进行协作;对于将计算机连…...
ERDUnet: An Efficient Residual Double-codingUnet for Medical Image Segmentation
ERDUnet:一种用于医学图像分割的高效残差双编码单元 摘要 医学图像分割在临床诊断中有着广泛的应用,基于卷积神经网络的分割方法已经能够达到较高的准确率。然而,提取全局上下文特征仍然很困难,而且参数太大,无法临床应用。为此,我们提出了一种新的网络结构来改进传统的…...
vue响应式基础
声明响应式状态 ref() 在组合式 API 中,推荐使用 ref() 函数来声明响应式状态: import { ref } from vueconst count ref(0) ref() 接收参数,并将其包裹在一个带有 .value 属性的 ref 对象中返回: const count ref(0)c…...
每天上万简历,录取不到1%!阿里腾讯的 offer 都给了哪些人?
三月天杨柳醉春烟~正是求职好时节~ 与去年秋招的冷淡不同,今年春招市场放宽了许多,不少企业纷纷抛出橄榄枝,各大厂的只差把“缺人”两个字写在脸上了。 字节跳动技术方向开放数10个类型岗位,研发需求占比60%,非研发新增…...
外包干了20天,技术退步明显.......
先说一下自己的情况,大专生,21年通过校招进入杭州某软件公司,干了接近2年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了2年的功能测试…...
4核8G云服务器,阿里云要多少钱?
阿里云4核8G服务器优惠价格955元一年,配置为ECS通用算力型u1实例(ecs.u1-c1m2.xlarge)4核8G配置、1M到3M带宽可选、ESSD Entry系统盘20G到40G可选,CPU采用Intel(R) Xeon(R) Platinum处理器,阿里云活动链接 aliyunfuwuq…...
数学分析复习:振荡型级数的收敛判别
文章目录 振荡型级数的收敛判别 本篇文章适合个人复习翻阅,不建议新手入门使用 振荡型级数的收敛判别 直观上,振荡型级数说的是级数各项有正有负,求和的时候可以相互抵消,故可能收敛 命题:Abel求和公式 设复数列 { …...
阿里CICD流水线Docker部署,将阿里镜像私仓中的镜像部署到服务器中
文章目录 阿里CICD流水线Docker部署,将阿里镜像私仓中的镜像部署到服务器中一、CICD流水线的初步使用可以看我之前的两篇文章二、添加部署任务,进行Docker部署,创建一个阿里的试用主机1、选择主机部署,并添加服务主机2、创建免费体…...
并发VS并行
参考文章 面试必考的:并发和并行有什么区别? 并发:一个人同时做多件事(射击游戏队友抢装备) 并行:多人同时处理同一件事(射击游戏敌人同时射击对方)...
C语言经典例题(8) --- 进制A+B、网购、及格分数、最高分数、计算一元二次方程
文章目录 1.进制AB2.网购3.及格分数4.最高分数5.计算一元二次方程 1.进制AB 题目描述: 输入一个十六进制数a,和一个八进制数b,输出ab的十进制结果(范围-231~231-1)。 输入描述: 一行,一个十六…...
两区域二次调频风火机组,麻雀启发式算法改进simulink与matlab联合
区域1结果 区域2结果 红色曲线为优化后结果〔风火机组二次调频〕...
自动驾驶国际标准ISO文件
Coordinate system:Road vehicles — Vehicle dynamics and road-holding ability — Vocabulary...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
高防服务器价格高原因分析
高防服务器的价格较高,主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因: 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器,因此…...
