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,可以轻松地实现各种对话框,包括消息框、文件对话框、颜色选择对话框等,从而丰富了应用程序的功能和用户体验。


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

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

相关文章

Linux命令学习入门

文章目录 登录注销关机重启Vim编辑器快捷键文件目录类打包、解包、压缩和解压指令输出重定向>和追加>>指令时间日期类搜索查找类用户管理文件所有者所在组权限管理变更权限crond任务时间调度crond相关指令&#xff1a;特殊符号说明&#xff1a; at定时任务磁盘分区磁盘…

作用域闭包

一、闭包的概念 当函数可以记住并访问所在的词法作用域时&#xff0c;就产生了闭包&#xff0c;即使函数时在当前词法作用域之外执行。 下面用一些代码来解释这个定义。 function foo(){var a 2;function bar() {console.log(a);}bar(); }foo();这段代码看起来和嵌套作用域…

记录三菱:Works2-FB块

创建一个FB块&#xff0c;启保停&#xff0c;定义输入输出引脚&#xff0c;注意这里的数据类型是Bit 打开主程序&#xff0c;将FB块拖出来 启保停&#xff1a;加入时间设定&#xff0c;时间显示倒着

nginx集群部署访问不了怎么解决

如果你的Nginx集群部署无法访问&#xff0c;可能有多种原因导致&#xff0c;以下是一些常见的解决方法&#xff1a; 检查网络连接&#xff1a;确保服务器之间的网络连接是正常的&#xff0c;可以通过ping命令或telnet命令检查服务器之间的网络连通性。 检查防火墙设置&#xff…

docker基础(四)之docker run(第一弹)

目录 概述语法命令选项用法速查OPTIONS说明&#xff1a;-a stdinSTDIN/STDOUT/STDERR指的是什么&#xff1f;举例将容器的标准输入、标准输出、标准错误重定向到本地文件将容器的标准流重定向到设备将容器的标准流重定向到网络 -d示例应用场景返回的容器ID作用怎么通过容器ID查…

基于C/C++的easyx实现贪吃蛇游戏

文章目录&#xff1a; 一&#xff1a;运行效果 1.演示 2.思路和功能 二&#xff1a;代码 文件架构 Demo 必备知识&#xff1a;基于C/C的easyx图形库教程 一&#xff1a;运行效果 1.演示 效果图◕‿◕✌✌✌ 基于C/C的easyx实现贪吃蛇游戏运行演示 参考&#xff1a;【C语…

5.5.5、【AI技术新纪元:Spring AI解码】使用PGvector设置向量存储及进行相似性搜索

使用PGvector设置向量存储及进行相似性搜索 本节指导您如何设置PGvector VectorStore来存储文档嵌入并执行相似性搜索。 PGvector是一个开源的PostgreSQL扩展,能够支持存储和搜索机器学习生成的嵌入向量,提供查找精确和近似最近邻的功能。它设计得与PostgreSQL的其他特性无…

Oracle:ORA-01830错误-更改数据库时间格式

1,先把报错SQL语句拿出来执行&#xff0c;看看是不是报的这个错 ORA-01830: 日期格式图片在转换整个输入字符串之前结束 2&#xff0c;然后查看默认日期格式是不是“YYYY-MM-DD HH24:MI:SS”&#xff08;正确格式&#xff09;。&#xff1b; 执行&#xff1a; SELECT * FRO…

citus的快速开始

准备 dockercitus最新版本&#xff08;docker pull citusdata/citus&#xff09; docker网络 docker network create --subnet172.72.9.0/24 citus-test docker network ls启动citus服务 启动协调节点 docker run -dit --name citus-cod -p 5433:5432 -e POSTGRES_PASSWOR…

Transformer的前世今生 day06(Self-Attention和RNN、LSTM的区别)

Self-Attention和RNN、LSTM的区别 RNN的缺点&#xff1a;无法做长序列&#xff0c;当输入很长时&#xff0c;最后面的输出很难参考前面的输入&#xff0c;即长序列会缺失上文信息&#xff0c;如下&#xff1a; 可能一段话超过50个字&#xff0c;输出效果就会很差了 LSTM通过忘…

【SAP-ABAP】CO01保存时错误DBSQL_DUPLICATE_KEY_ERROR

找到该表的主键OBJNR&#xff0c;事务代码SM56中查看当前缓冲到该key的号码段&#xff0c;事务代码SNRO修改对象名称OBJNR编号范围状态。 事务代码SM13查看数据更新记录

静态路由实验配置

题目及实验图 第一步划分IP IP配置如下 1&#xff09;R1&#xff1a; <Huawei>sy Enter system view, return user view with CtrlZ. [Huawei]sy R1 [R1]int g 0/0/0 [R1-GigabitEthernet0/0/0]ip ad 192.168.1.1 30 [R1-GigabitEthernet0/0/1]ip ad 192.168.1.5…

LeetCode 热题 HOT 100(P21~P30)

系列文章&#xff1a; LeetCode 热题 HOT 100(P1~P10)-CSDN博客 LeetCode 热题 HOT 100(P11~P20)-CSDN博客 LeetCode 热题 HOT 100(P21~P30)-CSDN博客 LC48rotate_image . - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 给定一个 n n 的二维矩阵 matrix 表…

for循环三种跳出循环的方法(retrun、continue、break)

return return是最常用的&#xff0c;不能单独在for循环中使用&#xff0c;要在函数中配合使用。 function fn () {for (var i 1; i < 5; i) {if (i 4) {return false;}console.log(i); // 分别输出 1&#xff0c;2, 3}console.log(end); // 未执行 } fn();使用return会…

JavaScript 如何设置私有属性

ES6之前的私有属性模拟 1、构造函数形式创建对象 function Person(name) {let _name name; // 私有属性this.getName function() {return _name;};this.setName function(newName) {_name newName;}; }let person new Person(Alice); console.log(person.getName()); //…

一文彻底搞懂Redis底层数据结构

文章目录 1. 数据结构与数据类型的关系2. 底层数据结构详解2.1 SDS: 简单动态字符串2.2 双端链表2.3 压缩列表2.4 哈希表2.5 整数集合2.6 跳表2.7 quicklist2.8 listpack 1. 数据结构与数据类型的关系 Redis是一个基于内存的数据存储系统&#xff0c;它支持多种数据结构和数据…

vue项目报这个错是 Same `value` exist in the tree: 0008E3000E1A?

警告 "Same value exist in the tree: 0008E3000E1A" 表示在树形选择器中存在相同的值。这通常是由于树形选择器的数据中存在重复的值造成的。就是返回的值中&#xff0c;有俩个id相同

基于K-近邻的PLOSAR图像分类

&#x1f380;个人主页&#xff1a; https://zhangxiaoshu.blog.csdn.net &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️&#xff0c;如有错误敬请指正! &#x1f495;未来很长&#xff0c;值得我们全力奔赴更美好的生活&…

nginx编译安装详细说明(CentOS)

前言 在 CentOS 7 上编译安装 Nginx 1.24.0 &#xff0c;您可以按照以下步骤进行操作。 一、编译前准备 1.1、在开始编译之前&#xff0c;确保您的系统已安装必要的编译工具和依赖项。在 CentOS 7 上&#xff0c;您可以使用以下命令安装这些工具&#xff1a; [roottd66 loc…

mybatis实践篇(二)

自定义类型处理器&#xff08;TypeHandler&#xff09; 实体 package com.wyl.mybatis.entity;import java.util.Date;/*** Description 省市区-字典* Author wuyilong* Date 2024-02-26*/public class FullCity {private static final long serialVersionUID 1L;/*** 主键I…