【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框


  • 博客主页:Duck Bro 博客主页
  • 系列专栏:Qt 专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

Qt窗口 | 对话框 | 创建自定义对话框

文章编号:Qt 学习笔记 / 52

文章目录

  • Qt窗口 | 对话框 | 创建自定义对话框
    • 一、自定义对话框
      • 1. Qt标准对话框
      • 2. 自定义对话框
    • 二、代码方式实现
      • 1. 创建QMainWindow窗口
      • 2. 添加按钮来触发对话框
      • 3. 创建C++类(Dialog类)
      • 4. 编写按钮的槽函数
      • 5. 子窗口进行添加控件
    • 三、图形化实现
      • 1. 创建QMainWindow窗口
      • 2. 创建一个按钮控件
      • 3. 新建一个ui文件
      • 4. 在界面中创建按钮和标签
      • 5. 编写及创建按钮槽函数
      • 6. 编写及创建关闭按钮槽函数


一、自定义对话框

1. Qt标准对话框

在Qt中存在许多自带的对话框,Qt 提供了多种可复⽤的对话框类型,即 Qt 标准对话框。Qt 标准对话框全部继承于QDialog类。
在这里插入图片描述

2. 自定义对话框

自定义对话框是一种可以根据用户需求进行定制的对话框界面。 通常,对话框是在应用程序中用于与用户进行交互的一种界面元素。而自定义对话框则可以根据具体的应用场景和功能需求,对对话框的样式、布局、内容等进行自定义。

例如,可以通过自定义对话框来创建一个具有特定样式和交互方式的确认对话框、输入对话框、选择对话框等。自定义对话框可以提供更加灵活和个性化的用户界面,以满足不同应用程序的需求。
在这里插入图片描述


二、代码方式实现

1. 创建QMainWindow窗口

步骤参考文章【Qt 学习笔记】Qt窗口 | Qt窗口介绍 | QMainwindow类及各组件介绍
在文章中详细介绍了如何创建一个QMainWindow窗口

2. 添加按钮来触发对话框

在QMainWindow窗口上,创建一个打开窗口的按钮

//mainwindow.h
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    //声明槽函数
    void handle();

private:
    Ui::MainWindow *ui;
};
//mainwindow.cpp
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //创建一个按钮
    QPushButton* button = new QPushButton("打开窗口按钮",this);
    //设置按钮的大小
    button->resize(300,100);
    //移动按钮位置
    button->move(250,200);
    //按钮信号点击触发槽函数
    connect(button,&QPushButton::clicked,this,&MainWindow::handle);
}

运行结果
在这里插入图片描述

3. 创建C++类(Dialog类)

  • 创建一个新的类,类名为Dialog,继承QDialog类。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 对dialog.h和dialog.cpp进行修改

//dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>

class Dialog : public QDialog
{
    Q_OBJECT
public:
    Dialog(QWidget* parent);
};

#endif // DIALOG_H
//dialog.cpp
#include "dialog.h"

Dialog::Dialog(QWidget* parent) : QDialog(parent)
{

}

4. 编写按钮的槽函数

void MainWindow::handle()
{
    //创建一个对话框
    Dialog * dialog = new Dialog(this);
    //设置窗口的大小
    dialog->resize(300,180);
    //设置窗口关闭
    dialog->setAttribute(Qt::WA_DeleteOnClose);
    //显示窗口
    dialog->show();
}

运行结果
在这里插入图片描述

5. 子窗口进行添加控件

dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>

class Dialog : public QDialog
{
    Q_OBJECT
public:
    Dialog(QWidget* parent);
    void buttonclose();
};

#endif // DIALOG_H

dialog.cpp
#include "dialog.h"
#include<QPushButton>
#include<QLabel>
#include<QVBoxLayout>
Dialog::Dialog(QWidget* parent) : QDialog(parent)
{
    //创建垂直布局
    QVBoxLayout* layout = new QVBoxLayout();
    this->setLayout(layout);
    //创建标签和按钮
    QLabel * label = new QLabel("这是一个窗口",this);
    QPushButton* button = new QPushButton("关闭",this);
    //将控件添加进布局中
    layout->addWidget(label);
    layout->addWidget(button);
    //进行按钮槽函数链接
    connect(button,&QPushButton::clicked,this,&Dialog::buttonclose);

}

void Dialog::buttonclose()
{
	//关闭子窗口
    this->close();
}

运行结果
在这里插入图片描述


三、图形化实现

1. 创建QMainWindow窗口

步骤参考文章【Qt 学习笔记】Qt窗口 | Qt窗口介绍 | QMainwindow类及各组件介绍
在文章中详细介绍了如何创建一个QMainWindow窗口

2. 创建一个按钮控件

在界面中拖拽进一个PushButton控件
在这里插入图片描述

3. 新建一个ui文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 在界面中创建按钮和标签

在dialog.ui文件中创建PushButton按钮和Label标签
在这里插入图片描述

5. 编写及创建按钮槽函数

在这里插入图片描述
在这里插入图片描述

void MainWindow::on_pushButton_clicked()
{
    //创建窗口
    Dialog* dialog = new Dialog(this);
    //关闭窗口释放内存
    dialog->setAttribute(Qt::WA_DeleteOnClose);
    //展示窗口
    dialog->show();
}

6. 编写及创建关闭按钮槽函数

在这里插入图片描述

在这里插入图片描述

void Dialog::on_pushButton_clicked()
{
    //关闭窗口
    this->close();
}

运行结果
在这里插入图片描述


在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[人工智能]啥是大模型?一篇文章看懂火遍全网的“AI大模型”

美国商业科技界正在升起两位“新神”。 一位是“钢铁侠”埃隆马斯克&#xff0c;“带领人类走向火星”&#xff1b; 一位是“奥特曼”山姆阿尔特曼&#xff0c;“带领AI走向人类”。 大多数人对马斯克很熟悉了&#xff0c;特斯拉汽车在中国道路上疾驰&#xff0c;朋友圈也经…

B端系统的颜值问题:成也框架,败也框架!

B端UI框架和前端框架的出现&#xff0c;让系统的搭建就像堆积木一样&#xff0c;十分的容易了。这也一下子把程序员的设计和审美水平拔高到了UI框架能够达到的高度。伴随而来的则是系统的堆砌、同质化、糟糕的体验&#xff0c;以及各种违和的组件被生搬硬套的绑定在一块&#x…

LabVIEW故障预测

在LabVIEW故障预测中&#xff0c;振动信号特征提取的关键技术主要包括以下几个方面&#xff1a; 时域特征提取&#xff1a;时域特征是直接从振动信号的时间序列中提取的特征。常见的时域特征包括振动信号的均值、方差、峰值、峰-峰值、均方根、脉冲指数等。这些特征能够反映振动…

电信数字员工“上岗”!重庆电信携手实在智能加快“数智化”转型

中国电信股份有限公司重庆分公司&#xff08;以下简称重庆电信&#xff09;与实在智能已达成合作&#xff0c;由实在智能为其建设RPA数字员工&#xff0c;首批已覆盖数十个业务场景&#xff0c;大幅提升相应业务自动化和智能化水平。深度适配电信业务运转的RPA数字员工&#xf…

JVM原理之运行时数据区域

Java运行时数据区(Runtime Data Area)是Java虚拟机(JVM)在运行Java程序时内部维护的一系列数据区域。这些区域共同协作,确保Java程序能够高效、稳定地运行。本文将详细介绍Java运行时数据区的结构和作用。 java虚拟机运行时数据区域 根据《Java虚拟机规范》规定,jvm内存…

【Java笔记】第11章:内部类

前言1. 讲解结语 上期回顾:【Java笔记】第10章&#xff1a;接口 个人主页&#xff1a;C_GUIQU 归属专栏&#xff1a;【Java学习】 前言 各位小伙伴大家好&#xff01;上期小编给大家讲解了Java中的接口&#xff0c;接下来讲讲Java中的内部类&#xff01; 1. 讲解 Java中的内…

通用大模型VS垂直大模型,相辅相成!

1.通用大模型&#xff1a; 如OpenAI的GPT系列、Google的PaLM等&#xff0c;因其广泛的训练数据来源和强大的泛化能力&#xff0c;展现出在多种任务和场景中的应用潜力。它们能够处理从文本生成、代码编写到语言翻译等多种复杂任务&#xff0c;适应性强&#xff0c;减少了针对单…

一文读懂Web Codecs API:浏览器背后的媒体魔术师

引言 ​在早期的Web 网页中&#xff0c;视频播放通常要依靠 Flash 和 Silverlight 等插件来完成&#xff0c;浏览器是不支持直接播放视频的。 随着网络技术的发展&#xff0c;视频这种媒体方式的需求变得普遍&#xff0c;HTML5中&#xff0c;出现了一个新的元素Video&#xf…

可积分兑换收银的会员卡小程序源码系统 带完整的安装代码包+搭建部署教程

系统概述 本会员卡小程序源码系统基于主流的前后端分离架构设计&#xff0c;前端采用Vue.js框架开发&#xff0c;后端服务则通过Node.js实现&#xff0c;数据库选用MySQL存储会员数据和交易记录。这样的技术栈确保了系统的高性能、易维护性和良好的扩展性。 代码示例 系统特色…

Win10 打开默认共享,提示 “拒绝访问“ 解决方法

1、打开计算机管理&#xff0c;默认共享C盘是开启的&#xff0c;如下图 2、但是想要能打开&#xff0c;防火墙还需要开启445端口 3、此时我们可以通过如下方式进行访问 4、输入账号密码后提示 "拒绝访问" 5、解决方法&#xff1a; &#xff08;1&#xff09;打开注…

【车载AI音视频电脑】智能驾驶监控系统,校车/警车/货车/油罐车AI分析与监控方案

校车监控方案 实时视频监控、校车位置查询、视频回放、轨迹回放。 2、 预设校车行驶线路&#xff0c;如有偏离&#xff0c;产生报警。 3、 预设校车车速&#xff0c;如超速&#xff0c;产生报警。 4、 预设学生下车&#xff0c;抓拍图片上传监管中心、预防小孩被困车内。 5…

【MySQL】性能分析

https://www.bilibili.com/video/BV1Kr4y1i7ru/?p78 查看执行频次 查看当前数据库的 INSERT, UPDATE, DELETE, SELECT 访问频次&#xff1a; SHOW GLOBAL STATUS LIKE Com_______; 或者 SHOW SESSION STATUS LIKE Com_______; 慢查询日志 慢查询日志记录了所有执行时间超过指…

git下载项目登录账号或密码填写错误不弹出登录框

错误描述 登录账号或密码填写错误不弹出登录框 二、解决办法 控制面板\用户帐户\凭据管理器 找到对应的登录地址进行更新或者删除 再次拉取或者更新就会提示输入登录信息

Apple Intelligence模型细节

介绍苹果的设备端和服务器基础模型 在2024年全球开发者大会&#xff08;WWDC&#xff09;上&#xff0c;苹果推出了Apple Intelligence&#xff0c;这是一个深度集成到iOS 18、iPadOS 18和macOS Sequoia中的个人智能系统&#xff0c;并公布相关技术细节&#xff0c;整理关键点…

【实例分享】访问后端服务超时,银河麒麟服务器操作系统分析及处理建议

1.服务器环境以及配置 【机型】 处理器&#xff1a; Intel 32核 内存&#xff1a; 128G 整机类型/架构&#xff1a; x86_64虚拟机 【内核版本】 4.19.90-25.22.v2101.kylin.x86_64 【OS镜像版本】 kylin server V10 SP2 【第三方软件】 开阳k8s 2.问题现象描述 …

【python】else与循环的搭配使用

看代码时发现的一种写法&#xff0c;学习一下。 1.for1&#xff09;break2&#xff09;no break 2.while1&#xff09;break2&#xff09;no break 几乎所有语言中&#xff0c;else的常用搭配就是if&#xff0c;而在python中else还可以和循环搭配使用&#xff0c;让代码更加pyt…

什么牌子充电宝质量好耐用呢?认准这几个充电宝,凭实力出圈

在快节奏的现代生活中&#xff0c;科技的不断进步使得各类移动设备如手机、平板和笔记本电脑成为人们生活中不可或缺的部分。为了应对这些设备不断增长的能源需求&#xff0c;充电宝市场的崛起迅猛并呈现出持续增长的态势。 在选购移动电源时&#xff0c;如何识别性能出众、质量…

Lua解释器裁剪

本文目录 1、引言2、文件功能3、选择需要初始化的库4、结论 文章对应视频教程&#xff1a; 已更新。见下方 点击图片或链接访问我的B站主页~~~ Lua解释器裁剪&#xff0c;很简单~ 1、引言 在嵌入式中使用lua解释器&#xff0c;很多时候会面临资源紧张的情况。 同时&#xff0c…

海豚调度清理:使用 API 轻松清理历史工作流实例以及日志文件

&#x1f4a1; 本系列文章是 DolphinScheduler 由浅入深的教程&#xff0c;涵盖搭建、二开迭代、核心原理解读、运维和管理等一系列内容。适用于想对 DolphinScheduler了解或想要加深理解的读者。 祝开卷有益。 大数据学习指南 大家好&#xff0c;我是小陶&#xff0c;DolphinS…

AI落地好项目,一张照片秒生成个人写真

AI变现好项目&#xff0c;秒生成个人写真 只需要输入1张照片&#xff0c;无需训练&#xff0c;就能秒级生成个人写真&#xff1f; 你没听错&#xff0c;就是这个神奇的AI工具–InstantID。 众所周知&#xff0c;AI图生图面临的挑战之一是无法保持较高的角色一致性&#xff0c…