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

Qt 入门 4 之标准对话框

Qt 入门 4 之标准对话框

Qt提供了一些常用的对话框类型,它们全部继承自QDialog类,并增加了自己的特色功能,比如获取颜色、显示特定信息等。下面简单讲解这些对话框,可以在帮助索引中查看Standard Dialogs关键字,也可以直接索引相关类的类名。

  • 本文将以一个新的项目为主介绍不同类型的对话框,新建Qt Widgets 应用程序,双击ui文件后添加按钮并修改文字显示:
    在这里插入图片描述
    在这里插入图片描述
  1. 颜色对话框
  • 颜色对话框 QColorDialog 提供了一个可以获取指定颜色的对话框部件
  • 设计模式下点击.ui文件,选中颜色对话框按钮,右键转到槽选中clicked() 后进入函数定义并修改如下:
void MyWidget::on_pushButton_clicked()
{QColor color=QColorDialog::getColor(Qt::red,this,tr("颜色对话框"));qDebug()<<"color:"<<color;
}
  • 编译执行如下图,这里使用了 QColorDialog的静态函数getColor()来获取颜色,它的3个参数的作用分别是:设置初始颜色、指定父窗口和设置对话框标题。这里的Qt::red是Qt预定义的颜色对象,可以直接单击该字符串,然后按下F1查看其快捷帮助,或者在帮助索引中通过 Qt::GlobalColor 关键字,从而查看到所有的预定义颜色列表。**getColor()**函数返回一个 QColor类型数据。现在运行程序,然后单击“颜色对话框”按钮,如果不选择颜色,直接单击 OK,那么输出信息应该是QColor(ARGB1,1,0,0),这里的4个数值分别代表透明度(alpha)、红色(red)、绿色(green)和蓝色(blue)。它们的数值都是从0.0-1.0,有效数字为6位。对于alpha来说,1.0表示完全不透明,这是默认值,而0.0表示完全透明。对于三基色红、绿、蓝的数值,还可以使用0-255来表示,颜色对话框中就是使用这种方法。其中,0表示颜色最浅,255表示颜色最深。在0-255与0.0-1.0之间可以通过简单的数学运算来对应,其中0对应0.0,255对应1.0。
    在这里插入图片描述

  • 在颜色对话框中还可以添加对alpha的设置,就是在**getColor()**函数中再使用最后一个参数:

QColor color=QColorDialog::getColor(Qt::red,this,tr("颜色对话框"),QColorDialog::ShowAlphaChannel);
qDebug()<<"color:"<<color;
  • 前边使用了QColorDialog 类的静态函数来直接显示颜色对话框,好处是不用创建对象,但是如果想要更灵活的设置,则可以先创建对象,然后进行各项设置:
void MyWidget::on_pushButton_clicked()
{QColorDialog dialog(Qt::red,this);    //创建对象dialog.setOption(QColorDialog::ShowAlphaChannel);dialog.exec(); //以模态方式运行对话框QColor color=dialog.currentColor();qDebug()<<"color:"<<color;
}

2.文件对话框

  • 文件对话框QFileDialog类提供了一个允许用户选择文件或文件夹的对话框。继续在 mywidget.cpp中添加#include<QFileDialog>头文件,然后从设计模式转到“文件对话框”按钮的单击信号槽,并更改如下:
void MyWidget::on_pushButton_5_clicked()
{//将会打开默认盘中的后缀文件QString filename=QFileDialog::getOpenFileName(this,tr("文件对话框"),"D:",tr("图片文件(*png*jpg"));qDebug()<<"fileName:"<<filename;
}
  • 这里使用了 QFileDialog类中的**getOpenFileName()**函数来获取选择的文件名,它的4个参数的作用分别是:指定父窗口设置对话框标题、指定默认打开的目录路径和设置文件类型过滤器。这个函数会以模态方式运行一个文件对话框。打开后选择一个文件,单击“打开”按钮后,这个函数便可以返回选择的文件的文件名。如果不指定文件过滤器,则默认选择所有类型的文件。这里指定了只选择png和jpg两种格式的图片
  • 也支持同时选择其他类型的文件:
 QString filename=QFileDialog::getOpenFileName(this,tr("文件对话框"),"D:",tr("图片文件(*png*jpg);;文本文件(*txt)"));

在这里插入图片描述

  • 前边只支持选择单个文件,要同时选择多个文件,则可以使用getOpenFileNames()函数:
   QStringList filenames=QFileDialog::getOpenFileNames(this,tr("文件对话框"),"F:",tr("图片文件(*png,jpg"));
  • 运行程序就可以同时选择多个图片文件了,多个文件名存放在QStringList类型变量中。当然也可以不使用这些静态函数,而是建立对话框对象来操作。除了上面的两个函数外,QFileDialog类还提供了getSaveFileName()函数来实现保存文件对话框和文件另存为对话框,还有getExistingDirectory()函数来获取一个已存在的文件夹路径。因为它们的用法与上面的例子类似,这里就不再举例。
  1. 字体对话框
  • 字体对话框QFontDialog类提供了一个可以选择字体的对话框部件。先添加#include <QFontDialog>头文件,然后转到“字体对话框”按钮的单击信号槽,更改如下:
void MyWidget::on_pushButton_2_clicked()
{//ok用于标记是否单击了 OK 按钮bool ok;QFont font=QFontDialog::getFont(&ok,this);//如果单击OK按钮,那么让“字体对话框”按钮使用新字体//如果单击Cancel按钮,那么输出信息if(ok)ui->pushButton_2->setFont(font);elseqDebug()<<tr("没有选择字体!");
}

在这里插入图片描述

  • 这里使用了QFileDialog类的 getFont() 静态函数来获取选择的字体。这个函数的第一个参数是bool类型变量,用来存放按下的按钮状态,比如在打开的字体对话框中单击了OK按钮,那么这里的ok就为true,这样来告诉程序已经选择了字体,如下图是选择了微软雅黑 14号字体的显示结果:
    在这里插入图片描述
  1. 输入对话框
  • 输入对话框 QInputDialog类用来提供一个对话框,可以让用户输入一个单一的数值或字符串。先添加头文件#include <QInputDialog>,然后进入“输人对话框”按钮的单击信号槽,更改如下:
void MyWidget::on_pushButton_6_clicked()
{bool ok;//获取字符串QString string = QInputDialog::getText(this,tr("输入字符串对话框"),tr("请输入用户名"),QLineEdit::Normal,tr("admin"),&ok);if(ok)qDebug()<<"string:"<<string;//获取整数int value = QInputDialog::getInt(this,tr("输入整数对话框"),tr("请输入-1000到1000之间的数值"),100,-1000,1000,10,&ok);if(ok)qDebug()<<"value:"<<value;//获取浮点数double value2=QInputDialog::getDouble(this,tr("输入浮点数对话框"),tr("请输入-1000到1000之间的数值"),0.00,-1000,1000,2,&ok);if(ok)qDebug()<<"value2:"<<value2;QStringList items;items<<tr("条目1")<<tr("条目2");//获取条目QString item=QInputDialog::getItem(this,tr("输入条目对话框"),tr("请选择或输入一个条目"),items,0,true,&ok);if(ok)qDebug()<<"item:"<<item;
}
  • 分别使用不同的函数定义了输入不同类型的对话框,运行如下:
    在这里插入图片描述
  1. 消息对话框
  • 消息对话框QMessageBox类提供了一个模态的对话框来通知用户一些信息,或者向用户提出一个问题并且获取答案。先添加头文件#include,然后转到“消息对话框”按钮的单击信号槽中,添加如下代码:
void MyWidget::on_pushButton_3_clicked()
{//问题对话框int ret1 = QMessageBox::question(this,tr("问题对话框"),tr("你了解Qt吗?"),QMessageBox::Yes,QMessageBox::No);if(ret1 == QMessageBox::Yes)qDebug()<<tr("问题!");//提示对话框int ret2 = QMessageBox::information(this,tr("提示对话框"),tr("这是Qt书籍!"),QMessageBox::Ok);if(ret2 == QMessageBox::Ok)qDebug()<<tr("提示!");//警告对话框int ret3 = QMessageBox::warning(this,tr("警告对话框"),tr("不能提前结束!"),QMessageBox::Yes,QMessageBox::No);if(ret3 == QMessageBox::Abort)qDebug()<<tr("警告!");//错误对话框int ret4 = QMessageBox::critical(this,tr("严重错误对话框"),tr("发现一个严重错误!"),QMessageBox::Yes,QMessageBox::No);if(ret4 == QMessageBox::YesAll)qDebug()<<tr("错误!");//关于对话框QMessageBox::about(this,tr("关于对话框"),tr("Qt Creator 普及工作!"));
}

在这里插入图片描述

  1. 进度对话框
  • 进度对话框 QProgressDialog对一个耗时较长操作的进度提供了反馈。先添加#include <QProgressDialog>头文件,然后转到“进度对话框”按钮的单击信号槽,更改如下:
void MyWidget::on_pushButton_7_clicked()
{QProgressDialog dialog(tr("文件复制进度"),tr("取消"),0,50000,this);dialog.setWindowTitle(tr("进度对话框"));  //设置窗口标题dialog.setWindowModality(Qt::WindowModal);   //将对话框设置为模态dialog.show();for(int i=0;i<50000;i++)    //演示复制进度{dialog.setValue(i);     //设置进度条的当前值QCoreApplication::processEvents();  //避免界面冻结//QThread::sleep(1);if(dialog.wasCanceled())break;}dialog.setValue(50000);    //这样才显示100%,因为for循环中少加了一个数qDebug()<<tr("复制结束!");
}

在这里插入图片描述

  1. 错误信息对话框
  • 错误信息对话框QErrorMessage类提供了一个显示错误信息的对话框。首先打开mywidget.h文件添加类前置声明:
class QErrorMessage;
  • 然后添加私有对象:
ErrorMessage *errordlg;
  • 下面到mywidget.cpp添加头文件#include <QErrorMessage>,并在构造函数中添加如下代码:
errordlg=newQErrorMessage(this);
  • 然后从设计模式转到“错误信息对话框”按钮的单击信号槽添加代码
void Mywidget::on pushButton 7 clicked()
{errordlg->setwindowTitle(tr("错误信息对话框"));errordlg->showMessage(tr("这里是出错信息!));
}
  • 运行如下:
    在这里插入图片描述
  1. 向导对话框
  • 向导对话框QWizard类提供了一个设计向导界面的框架。对于向导对话框,读者应该已经很熟悉了,比如安装软件时的向导和创建项目时的向导。QWizard之所以被称为框架,是因为它具有设计一个向导全部的功能函数,可以使用它来实现想要的效果。Qt中包含了 Trivial Wizard、License Wizard和Class Wizard这3个示例程序,可以参考一下。
  • 打开 mywidget.h文件,然后添加头文件#include <QWizard>,在MyWidget 类的声明中添加private类型函数声明:
  QWizardPage* createPage1();QWizardPage* createPage2();QWizardPage* createPage3();
  • 这里声明了3个返回值为QWizardPage类对象的指针函数,用来生成3个向导页面。然后在mywidget.cpp文件中对这3个函数进行定义:
QWizardPage* MyWidget::createPage1()
{QWizardPage* page=new QWizardPage;page->setTitle(tr("介绍"));return page;
}
QWizardPage* MyWidget::createPage2()
{QWizardPage* page=new QWizardPage;page->setTitle(tr("用户选择信息"));return page;
}
QWizardPage* MyWidget::createPage3()
{QWizardPage* page=new QWizardPage;page->setTitle(tr("结束"));return page;
}
  • 在各个函数中分别新建了向导页面,并且设置了它们的标题。下面转到“向导对话框”按钮的单击信号槽中,更改如下:
void MyWidget::on_pushButton_8_clicked()
{QWizard wizard(this);wizard.setWindowTitle(tr("向导对话框"));wizard.addPage(createPage1());   //添加向导对话框wizard.addPage(createPage2());wizard.addPage(createPage3());wizard.exec();
}
  • 运行如下:

在这里插入图片描述

相关文章:

Qt 入门 4 之标准对话框

Qt 入门 4 之标准对话框 Qt提供了一些常用的对话框类型,它们全部继承自QDialog类,并增加了自己的特色功能,比如获取颜色、显示特定信息等。下面简单讲解这些对话框,可以在帮助索引中查看Standard Dialogs关键字,也可以直接索引相关类的类名。 本文将以一个新的项目为主介绍不…...

PyTorch DataLoader 参数详解

在使用 PyTorch 的 DataLoader 时&#xff0c;有许多参数可以调整&#xff0c;这些参数能够帮助我们平衡数据加载效率、内存使用和训练过程的稳定性。下面介绍几个常用参数&#xff0c;并讲解它们的作用&#xff1a; dataset 含义&#xff1a; 数据集对象&#xff0c;必须实现 …...

PowerBI 计算时间用EDATE

我在原表基础上&#xff0c;根据日期字段&#xff0c;计算去年时间 CONCATENATEX(DISTINCT(SELECTCOLUMNS(VALUES(日期表),"去年", FORMAT(DATEADD([日期], -1, YEAR), "yyyyMM"))), [YearMonth],",") 我发现很奇怪的现象&#xff0c;假如某个日…...

GRBL运动控制算法(四)加减速运算

前言 在数控系统和运动控制领域&#xff0c;GRBL 作为一款高效、轻量化的开源固件&#xff0c;因其卓越的性能和简洁的架构被广泛应用于各类嵌入式运动控制场景。GRBL加减速算法的实现尤为关键——它直接决定了运动控制的精度、效率与设备稳定性。 本文深入解析加减速运算的核…...

CSS 学习提升网站或者项目

有几个不错的开源项目可以帮助你练习和提升CSS技能&#xff1a; CSS-Tricks CSS-Tricks 提供了很多关于CSS的技巧和教程&#xff0c;可以通过实践它们来提高CSS技能。你可以在CSS-Tricks上找到很多有趣的项目和代码示例。 Frontend Mentor Frontend Mentor 是一个非常适合练习…...

PolarDB 读已提交事务隔离级别 select ... for update, where条件未用索引,查不到数据的时候不会锁表

由于没有给字段设置唯一性&#xff0c;所以改为通过查询语句加锁确保唯一性&#xff0c;但是发现select count(*) 为0时&#xff0c;不会加锁&#xff0c;所以在insert方法后面需要加锁二次查询确保唯一性。 在 PolarDB 的读已提交事务隔离级别下&#xff0c;SELECT ... FOR UP…...

Python基础——Matplotlib库

绘图基础 Matplotlib 库太大&#xff0c;画图通常仅仅使用其中的核心模块 matplotlib.pyplot&#xff0c;并给其一个别名 plt&#xff0c;即 import matplotlib.pyplot as plt。为了使图形在展示时能很好的嵌入到 Jupyter 的 Out[ ] 中&#xff0c;需要使用%matplotlib inline…...

群晖Hyper Backup备份的东西怎么还原?

一、背景 前面写了一篇文章关于群晖NAS中最简单的备份方案&#xff0c;Hyper Backup 方案 群晖NAS最简单的备份教程&#xff08;只备份需要的目录到不同的硬盘&#xff09;&#xff0c;留了个尾&#xff0c;即怎么还原备份的东西&#xff0c;这里完结一下。 二、还原方案 2.…...

记录IBM服务器检测到备份GPT损坏警告排查解决过程

服务器设备&#xff1a;IBM x3550 M4 Server IMM默认IP地址&#xff1a;192.168.70.125 用户名&#xff1a;USERID 密码&#xff1a;PASSW0RD&#xff08;注意是零0&#xff09; 操作系统&#xff1a;Windows Hyper-V Server 2016 IMM Web System Status Warning&#xff1…...

蓝桥杯嵌入式十五届模拟二(串口DMA,占空比的另一种测量方式)

一.LED 先配置LED的八个引脚为GPIO_OutPut&#xff0c;锁存器PD2也是&#xff0c;然后都设置为起始高电平&#xff0c;生成代码时还要去解决引脚冲突问题 二.按键 按键配置&#xff0c;由原理图按键所对引脚要GPIO_Input 生成代码&#xff0c;在文件夹中添加code文件夹&#…...

22 | 如何继续提升 Go 开发技术?

提示&#xff1a; 所有体系课见专栏&#xff1a;Go 项目开发极速入门实战课&#xff1b;欢迎加入 云原生 AI 实战营 星球&#xff0c;12 高质量体系课、20 高质量实战项目助你在 AI 时代建立技术竞争力&#xff08;聚焦于 Go、云原生、AI Infra&#xff09;。 「Go 项目开发极速…...

一文详解OpenCV环境搭建:Windows使用CLion配置OpenCV开发环境

在计算机视觉和图像处理领域&#xff0c;OpenCV 是一个不可或缺的工具。其为开发者提供了一系列广泛的算法和实用工具&#xff0c;支持多种编程语言&#xff0c;并且可以在多个平台上运行。对于希望在其项目中集成先进视觉功能的开发者来说&#xff0c;掌握如何配置和使用OpenC…...

云原生周刊:深入探索 kube-scheduler-simulator

开源项目推荐 mcp-server-kubernetes mcp-server-kubernetes 是一个实现了模型上下文协议&#xff08;MCP&#xff09;的服务器&#xff0c;旨在通过自然语言与 K8s 集群进行交互。它支持连接到 K8s 集群&#xff0c;列出所有 Pod、服务、部署和节点&#xff0c;创建、描述、…...

总结一下常见的EasyExcel面试题

说一下你了解的POI和EasyExcel POI&#xff08;Poor Obfuscation Implementation&#xff09;&#xff1a;它是 Apache 软件基金会的一个开源项目&#xff0c;为 Java 程序提供了读写 Microsoft Office 格式文件的功能&#xff0c;支持如 Excel、Word、PowerPoint 等多种文件格…...

【Java设计模式】第2章 UML急速入门

2-1 本章导航 UML类图与时序图入门 UML定义 统一建模语言(Unified Modeling Language):第三代非专利建模语言。特点:开放方法,支持可视化构建面向对象系统,涵盖模型、流程、代码等。UML分类(2.2版本) 结构式图形:系统静态建模(类图、对象图、包图)。行为式图形:事…...

Excel处理控件Spire.XLS系列教程:C# 设置 Excel 中的数字格式

在 Excel 工作表中&#xff0c;原始数据通常显示为缺乏直观性的普通数字。通过设置数字格式&#xff0c;可以将这些数字转换成更容易理解的形式。例如&#xff0c;将销售额数据设置为货币格式&#xff0c;即添加货币符号和千位分隔符&#xff0c;可使所代表的金额一目了然。将市…...

脚本启动 Java 程序

如果你想在后台启动一个 Java 程序&#xff0c;并在终端窗口中显示一个自定义的名字&#xff0c;可以通过编写一个简单的脚本来实现。以下是一个基于 Linux/macOS 的解决方案&#xff0c;使用 Bash 脚本启动 Java 程序&#xff0c;并在终端窗口中显示自定义标题。 示例脚本 创建…...

UniappX动态引入在线字体图标,不兼容css时可用。

优缺点 优点&#xff1a;不需要占用本地存储&#xff0c;可直接在线同步库图标&#xff0c;不用再手动引入ttf文件&#xff0c;不用手动添加键值对对应表。 缺点&#xff1a;受网速影响&#xff0c;字体库cdn路径可能会更改&#xff0c;ios端首次加载&#xff0c;可能会无图标…...

机器学习 | 强化学习基本原理 | MDP | TD | PG | TRPO

文章目录 📚什么是强化学习🐇监督学习 vs 强化学习🐇马尔科夫决策过程(MDP)📚基本算法(value-based & policy-based)🐇时序差分算法(TD)🐇SARSA和Q-learning🐇策略梯度算法(PG)🐇REINFORCE和Actor-Critic🐇信任区域策略优化算法(TRPO)学习视频…...

k8s之Service类型详解

1.ClusterIP 类型 2.NodePort 类型 3.LoadBalancer 类型 4.ExternalName 类型 类型为 ExternalName 的 Service 将 Service 映射到 DNS 名称&#xff0c;而不是典型的选择算符&#xff0c; 例如 my-service 或者 cassandra。你可以使用 spec.externalName 参数指定这些服务…...

AI平台如何实现推理?数算岛是一个开源的AI平台(主要用于管理和调度分布式AI训练和推理任务。)

数算岛是一个开源的AI平台&#xff0c;主要用于管理和调度分布式AI训练和推理任务。它基于Kubernetes构建&#xff0c;支持多种深度学习框架&#xff08;如TensorFlow、PyTorch等&#xff09;。以下是数算岛实现模型推理的核心原理、架构及具体实现步骤&#xff1a; 一、数算岛…...

linux开发环境

1.虚拟机环境搭建 在 Ubuntu 系统中&#xff0c;打开&#xff08;如图中显示的窗口 &#xff09;常见快捷键有&#xff1a; Ctrl Alt T&#xff1a;这是最常用的打开终端的快捷键组合 &#xff0c;按下后会快速弹出一个新的终端窗口。 在 VMware 虚拟机环境中&#xff0c;若…...

OSPF复习

OSPF OSPF---开放最短路径优先协议 动态路由判定依据&#xff1a;选路&#xff0c;收敛速度&#xff0c;占用资源 OSPFV2和RIPV2的相同点&#xff1a; 1.都是无类别的路由协议&#xff1b; 2.都是通过组播来传播信息的&#xff1b;&#xff08;RIP&#xff1a;224.0.0.9&am…...

AWS S3深度剖析:云存储的瑞士军刀

1. 引言 在当今数据驱动的世界中,高效、可靠、安全的数据存储解决方案至关重要。Amazon Simple Storage Service (S3)作为AWS生态系统中的核心服务之一,为企业和开发者提供了一个强大而灵活的对象存储平台。本文将全面解析S3的核心特性,帮助读者深入理解如何充分利用这一&q…...

pyTorch中 tensorboard的使用

目录 01.导包、 transforms数据转化、torchvision数据集、创建dataloaders、展示图片的封装函数 02定义模型 03定义损失函数与优化器 1.tensorboard的安装 2.tensorboard的使用 2.1添加图片 2.2 添加模型结构图 2.3 添加损失的变化 #pyTorch中的tensorboard 与 tens…...

Android audio(2)-audioservice

AudioService是Android的系统服务&#xff08;systemservice&#xff09;&#xff0c;由SystemServer负责启动。提供Android APK 所需的非数据通路&#xff08;playback/capture&#xff09;相关的audio 功能实现&#xff0c;是binder通信中的server端&#xff0c;与之对应的 C…...

星城幻境:科技与千年文脉的交响诗-长沙

故事背景 故事发生在中国湖南长沙&#xff0c;通过六个充满未来感的城市景观&#xff0c;展现人工智能修复古建筑、生态摩天楼、全息水幕许愿等场景&#xff0c;描绘科技赋能下历史文脉与未来城市的共生图景。 故事内容 从岳麓书院清晨的智能修复到湘江夜空的数字烟花&#xff…...

记录学习的第二十三天

老样子&#xff0c;每日一题开胃。 我一开始还想着暴力解一下试试呢&#xff0c;结果不太行&#x1f602; 接着两道动态规划。 这道题我本来是想用最长递增子序列来做的&#xff0c;不过实在是太麻烦了&#xff0c;实在做不下去了。 然后看了题解&#xff0c;发现可以倒着数。 …...

sql-labs靶场 less-1

文章目录 sqli-labs靶场less 1 联合注入 sqli-labs靶场 每道题都从以下模板讲解&#xff0c;并且每个步骤都有图片&#xff0c;清晰明了&#xff0c;便于复盘。 sql注入的基本步骤 注入点注入类型 字符型&#xff1a;判断闭合方式 &#xff08;‘、"、’、“”&#xf…...

AI-人工智能-基于LC-MS/MS分子网络深度分析的天然产物成分解析的新策略

Anal Chem∣张卫东教授团队开发基于LC-MS/MS分子网络深度分析的天然产物成分解析的新策略 2024年9月23日&#xff0c;海军军医大学张卫东教授团队在Analytical Chemistry&#xff08;IF6.7&#xff09;上发表了题为“In-Depth Analysis of Molecular Network Based on Liquid …...

IntelliJ IDEA使用技巧(json字符串格式化)

文章目录 一、IDEA自动格式化json字符串二、配置/查找格式化快捷键 本文主要讲述idea中怎么将json字符串转换为JSON格式的内容并且有层级结构。 效果&#xff1a; 转换前&#xff1a; 转换后&#xff1a; 一、IDEA自动格式化json字符串 步骤一&#xff1a;首先创建一个临…...

【Java设计模式】第8章 单列模式讲解

8-1 单例模式讲解 定义与类型 定义:保证一个类仅有一个实例,并提供一个全局访问点。类型:创建型模式。适用场景 需要确保任何情况下绝对只有一个实例。实际应用: 网站计数器(单服务)。应用配置、线程池、数据库连接池。优点 减少内存开销(仅一个实例)。避免资源多重占…...

【Java设计模式】第4章 简单工厂讲解

4. 简单工厂模式 4.1 简单工厂讲解 定义:由一个工厂对象决定创建哪种产品类的实例,属于创建型模式,但不属于GoF 23种设计模式。适用场景: 工厂类负责创建的对象较少。客户端仅需传入参数,无需关心对象创建逻辑。优点: 客户端只需传入参数即可获取对象,无需知道创建细节…...

Spring Boot 常用依赖介绍

依赖总括 1. 核心依赖&#xff1a;Spring Web、Spring Data JPA、MySQL Driver。 2. 开发工具&#xff1a;Lombok、Spring Boot DevTools。 3. 安全与权限&#xff1a;Spring Security。 4. 测试与文档&#xff1a;Spring Boot Starter Test、Swagger。 5. 性能优化&#…...

判断矩阵A是否可以相似对角化

【例题1】 【例题2】...

第三方软件测试公司进行安全性测试有哪些好处?

在信息技术飞速发展的今天&#xff0c;软件已成为各行业运作的核心组成部分。然而&#xff0c;伴随而来的软件安全问题也愈发显著&#xff0c;因此软件产品安全性测试不容忽视。随着软件市场的激烈竞争&#xff0c;企业为了更好的专心产品开发&#xff0c;会将安全性测试服务交…...

下一代楼宇自控的中枢神经:ARM终端的生态

某跨国半导体工厂的洁净车间突然触发气体泄漏报警。此时&#xff0c;ARM应急广播终端在200毫秒内完成全楼宇语音播报&#xff0c;同步联动门禁系统解锁逃生通道&#xff0c;指挥中心大屏自动弹出事故区域监控画面——这套价值27万元的预警系统&#xff0c;在投产首年就避免了可…...

R语言进行判别分析

Fisher判别法、距离判别法、Bayes判别法基本理论、方法&#xff1a; Fisher判别法 理论基础&#xff1a; Fisher判别法旨在通过选择合适的投影方向&#xff0c;最大化不同类别之间的类间差异性&#xff0c;同时最小化类内差异性。这种投影方向使得在低维空间中样本点的类别可…...

Nacos 服务发现的流程是怎样的?客户端如何获取最新的服务实例列表?

服务发现是微服务架构的核心组件&#xff0c;它允许一个服务&#xff08;消费者&#xff09;动态地找到它需要调用的另一个服务&#xff08;提供者&#xff09;的网络地址&#xff08;IP 和端口&#xff09;&#xff0c;而无需硬编码这些地址。 整体流程概览: 服务提供者 (Pr…...

Java全栈项目--校园快递管理与配送系统(5)

源代码续 <template><div class"app-container"><el-card class"box-card"><div slot"header" class"clearfix"><span>通知统计</span><div class"header-operations"><el-d…...

UE5 本地化

文章目录 打开本地化面板设置本地化翻译设置文本收集路径添加语言收集需要翻译的文本手动翻译导入导出编译 使用本地化启动代码修改语言 打开本地化面板 UE4&#xff1a; UE5&#xff1a; 设置本地化翻译 设置文本收集路径 UE5可以自动帮我们收集需要显示的文本&#xff…...

用c语言写一个linux进程之间通信(聊天)的简单程序

使用talk 用户在同一台机器上talk指令格式如下&#xff1a; ​ talk 用户名ip地址 [用户终端号] 如果用户只登录了一个终端&#xff0c;那么可以不写用户终端号&#xff0c;如&#xff1a; talk userlocalhost可以使用who指令来查看当前有哪些用户登录&#xff0c;他的终端号…...

同时支持Vue2/Vue3的图片懒加载组件(支持懒加载 v-html 指令梆定的 html 内容)

&#x1f680; vue-lazyload-imgs&#xff08;LazyLoadImgs&#xff09; 组件简介 详情见&#xff1a;https://npmjs.com/package/vue-lazyload-imgs 安装方法&#xff1a; npm i vue-lazyload-imgs&#xff08;不要安装为开发依赖&#xff0c;应为产品依赖&#xff09; 适用环…...

Qt容器类在元对象系统中使用

解释 “QVector没有被注册到Qt的元对象系统中”这句话的意思是&#xff1a;QVector<double>这种数据类型没有被Qt的元对象系统&#xff08;Meta-Object System&#xff09;识别和管理。Qt的元对象系统是Qt框架的核心部分&#xff0c;它提供了信号与槽机制、动态属性系统…...

Qt中的信号与槽及其自定义

信号源&#xff1a;哪个控件发的信号 信号的类型&#xff1a;用户进行不同的操作就会触发不同的信号 如点击按钮&#xff0c;在输入框移动光标&#xff0c;勾选一个复选框&#xff0c;选 择一个下拉框 信号的处理方式&#xff1a;槽(slot)----也就是函数&#xff0c;Qt中用con…...

【已完结STM32】--自学江协科技笔记汇总

以下学习笔记代码均来自b站江协科技视频 笔记汇总完结 文章笔记对应江科大视频新建工程【2-2】新建工程江科大STM32-GPIO输出 点亮LED&#xff0c;LED闪烁&#xff0c;LED流水灯&#xff0c;蜂鸣器&#xff08;学习笔记&#xff09;_unit32-t rcc-apb2periph-CSDN博客 【3-1】…...

科技快讯 | 索诺瓦携手清华大学共筑听力无障碍未来;中国探月工程总设计师:未来月球上能打电话;Shopify要求员工证明AI无法取代其工作

索诺瓦携手清华大学共筑听力无障碍未来 2024年末&#xff0c;60岁以上人口超3.1亿&#xff0c;听力损失比例高达11%。清华大学无障碍发展研究院与索诺瓦集团深化合作&#xff0c;共同推动听力无障碍环境建设。2023年9月&#xff0c;《无障碍环境建设法》实施&#xff0c;2024年…...

[实战] 天线阵列波束成形原理详解与仿真实战(完整代码)

天线阵列波束成形原理详解与仿真实战 1. 引言 在无线通信、雷达和声学系统中&#xff0c;波束成形&#xff08;Beamforming&#xff09;是一种通过调整天线阵列中各个阵元的信号相位和幅度&#xff0c;将电磁波能量集中在特定方向的技术。其核心目标是通过空间滤波增强目标方…...

北京自在科技:让万物接入苹果Find My网络的″钥匙匠″

在AirTag掀起全球防丢热潮的今天&#xff0c;越来越多的第三方产品开始接入苹果Find My网络——从充电宝到电动车&#xff0c;从行李箱到保温杯&#xff0c;用户只需打开iPhone的「查找」App&#xff0c;就能实时定位这些物品。 北京自在科技有限责任公司早在苹果推出Find My开…...

区块链是怎么存储块怎么找到前一个块

前言&#xff1a;学习区块链的过程中在想怎么管理区块链呢 &#x1f4cc; 推荐项目回顾&#xff1a; &#x1f449; Jeiwan 的 blockchain_go 项目 GitHub 地址&#xff1a;https://github.com/Jeiwan/blockchain_go ❓它是怎么存储区块 & 找前一个区块的&#xff1f; 项…...