十、基本对话框大集合(Qt5 GUI系列)

 


目录

一、设计需求

二、实现代码

三、代码解析

四、总结


一、设计需求

        Qt提供了很多标准的对话框。例如标准文件对话框(QFileDialog)、标准颜色对话框(QColorDialog)、标准字体对话框 (QFontDialog)、标准输入对话框 (QInputDialog) 及消息对话框 (QMessageBox)。本文展示各种对话框的简单使用方法以及自定义消息框。

二、实现代码

main文件:

#include "dialog.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Dialog w;w.show();return a.exec();
}

dialog文件:

#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>
#include <QLineEdit>
#include <QGridLayout>
#include "inputdlg.h"
#include "msgboxdlg.h"
class Dialog : public QDialog
{Q_OBJECTpublic:Dialog(QWidget *parent = 0);~Dialog();
private:QPushButton *fileBtn;QLineEdit *fileLineEdit;QGridLayout *mainLayout;QPushButton *colorBtn;QFrame *colorFrame;QPushButton *fontBtn;QLineEdit *fontLineEdit;QPushButton *inputBtn;InputDlg *inputDlg;QPushButton *MsgBtn;MsgBoxDlg *msgDlg;QPushButton *CustomBtn;QLabel *label;
private slots:void showFile();void showColor();void showFont();void showInputDlg();void showMsgDlg();void showCustomDlg();
};#endif // DIALOG_H
#include "dialog.h"
#include<QGridLayout>
#include<QFileDialog>
#include<QPushButton>
#include <QColorDialog>
#include <QFontDialog>
#include <QMessageBox>
Dialog::Dialog(QWidget *parent): QDialog(parent)
{//设置标题setWindowTitle(tr("各种标准对话框的实例"));//标准文件对话框fileBtn=new QPushButton;                                    //各个控件对象的初始化fileBtn->setText(tr("文件标准对话框实例"));fileLineEdit=new QLineEdit;                                 //用来显示选择的文件名mainLayout=new QGridLayout(this);                           //布局设计mainLayout->addWidget(fileBtn,0,0);mainLayout->addWidget(fileLineEdit,0,1);connect(fileBtn,SIGNAL(clicked()),this,SLOT(showFile()));   //事件关联//标准颜色对话框colorBtn=new QPushButton;                                   //创建各个控件的对象colorBtn->setText(tr("颜色标准对话框实例"));colorFrame=new QFrame;colorFrame->setFrameShape(QFrame::Box);colorFrame->setAutoFillBackground(true);mainLayout->addWidget(colorBtn,1,0);                        //布局设计mainLayout->addWidget(colorFrame,1,1);connect(colorBtn,SIGNAL(clicked()),this,SLOT(showColor())); //事件关联//标准字体对话框fontBtn=new QPushButton;                                	//创建控件的对象fontBtn->setText(tr("字体标准对话框实例"));fontLineEdit=new QLineEdit;                              	//显示更改的字符串fontLineEdit->setText(tr("Welcome!"));mainLayout->addWidget(fontBtn,2,0);                         //布局设计mainLayout->addWidget(fontLineEdit,2,1);connect(fontBtn,SIGNAL(clicked()),this,SLOT(showFont()));   //事件关联//标准输入对话框inputBtn =new QPushButton;                                  //创建控件的对象inputBtn->setText(tr("标准输入对话框实例"));mainLayout->addWidget(inputBtn,3,0);                        //布局设计connect(inputBtn,SIGNAL(clicked()),this,SLOT(showInputDlg()));//事件关联//消息对话框MsgBtn =new QPushButton;                                    //创建控件对象MsgBtn->setText(tr("标准消息对话框实例"));mainLayout->addWidget(MsgBtn,3,1);connect(MsgBtn,SIGNAL(clicked()),this,SLOT(showMsgDlg()));//自定义消息框CustomBtn =new QPushButton;CustomBtn->setText(tr("用户自定义消息对话框实例"));label =new QLabel;label->setFrameStyle(QFrame::Panel|QFrame::Sunken);mainLayout->addWidget(CustomBtn,4,0);mainLayout->addWidget(label,4,1);connect(CustomBtn,SIGNAL(clicked()),this,SLOT(showCustomDlg()));
}Dialog::~Dialog()
{}
/*
QString QFileDialog::getOpenFileName
(QWidget* parent=0,                      //标准文件对话框的父窗口const QString & caption=QString ( ),	//标准文件对话框的标题名const QString & dir=QString( ),         //指定了默认的目录,若此参数带有文件名,则文件将是默认选中的文件const QString & filter=QString(),       //此参数对文件类型进行过滤,只有与过滤器匹配的文件类型才显示,可以同时指定多种过滤方式供用户选择,多种过滤器之间用“::”隔开QString * selectedFilter=O,             //用户选择的过滤器通过此参数返回Options options=0                       //选择显示文件名的格式,默认是同时显示目录与文件名
)
如果选择取消(Cancel),则返回一个空串儿
*/
void Dialog::showFile()
{//获取用户选择的文件名QString s = QFileDialog::getOpenFileName(this,"open file dialog","/","*");fileLineEdit->setText(s);
}
/*
QColor getColor
(const QColor& initial=Qt::white,QWidget* parent=0                   //标准颜色对话框的父窗口
);
指定了默认选中的颜色,默认为白色。通过 QCok)r::isValid()函数可以判断用户选择的
颜色是否有效,但是当用户在选择文件时,如果选择“取消”(Cancel), 则 QColor::is函
数将返回 false
*/
void Dialog::showColor()
{//获取用户选择的颜色QColor c = QColorDialog::getColor(Qt::blue);if(c.isValid()){//设置颜色colorFrame->setPalette(QPalette(c));}
}
/*
QFont getFont
(bool* ok,QWidget* parent=0           //标准字体对话框的父窗口
);
注:若用户选择 则该参数*ok 将设为true, 函数返回用户所选择的字体;否则,将
设为false, 此时函数返回默认字体。
*/
void Dialog::showFont()
{bool ok;QFont f = QFontDialog::getFont(&ok);if (ok){//设置字体fontLineEdit->setFont(f);}
}void Dialog::showInputDlg()
{//新建InputDlg对象inputDlg =new InputDlg(this);inputDlg->show();
}void Dialog::showMsgDlg()
{//新建MsgBoxDlg对象msgDlg =new MsgBoxDlg();msgDlg->show();
}void Dialog::showCustomDlg()
{label->setText(tr("Custom Message Box"));QMessageBox customMsgBox;customMsgBox.setWindowTitle(tr("用户自定义消息框"));	//设置消息框的标题QPushButton *yesBtn=customMsgBox.addButton(tr("Yes"),QMessageBox::ActionRole);QPushButton *noBtn=customMsgBox.addButton(tr("No"),QMessageBox::ActionRole);QPushButton *cancelBtn=customMsgBox.addButton(QMessageBox::Cancel);customMsgBox.setText(tr("这是一个用户自定义消息框!"));customMsgBox.setIconPixmap(QPixmap("Qt.jpeg"));customMsgBox.exec();if(customMsgBox.clickedButton()==yesBtn)label->setText("Custom Message Box/Yes");if(customMsgBox.clickedButton()==noBtn)label->setText("Custom Message Box/No");if(customMsgBox.clickedButton()==cancelBtn)label->setText("Custom Message Box/Cancel");return;
}

InputDlg文件: 

//添加的头文件
#include <QLabel>
#include <QPushButton>
#include <QGridLayout>
#include <QDialog>
class InputDlg : public QDialog
{Q_OBJECTpublic:InputDlg(QWidget* parent=0);
private slots:void ChangeName();void ChangeSex();void ChangeAge();void ChangeScore();
private:QLabel *nameLabel1;QLabel *sexLabel1;QLabel *ageLabel1;QLabel *scoreLabel1;QLabel *nameLabel2;QLabel *sexLabel2;QLabel *ageLabel2;QLabel *scoreLabel2;QPushButton *nameBtn;QPushButton *sexBtn;QPushButton *ageBtn;QPushButton *scoreBtn;QGridLayout *mainLayout;
};
#include "inputdlg.h"
#include <QInputDialog>
InputDlg::InputDlg(QWidget *parent) :QDialog(parent)
{setWindowTitle(tr("标准输入对话框的实例"));nameLabel1 =new QLabel;nameLabel1->setText(tr("姓名:"));nameLabel2 =new QLabel;nameLabel2->setText(tr("张三"));                    	//姓名的初始值nameLabel2->setFrameStyle(QFrame::Panel|QFrame::Sunken);nameBtn =new QPushButton;nameBtn->setText(tr("修改姓名"));sexLabel1 =new QLabel;sexLabel1->setText(tr("性别:"));sexLabel2 =new QLabel;sexLabel2->setText(tr("男"));                       	//性别的初始值sexLabel2->setFrameStyle(QFrame::Panel|QFrame::Sunken);sexBtn =new QPushButton;sexBtn->setText(tr("修改性别"));ageLabel1 =new QLabel;ageLabel1->setText(tr("年龄:"));ageLabel2 =new QLabel;ageLabel2->setText(tr("21"));                       //年龄的初始值ageLabel2->setFrameStyle(QFrame::Panel|QFrame::Sunken);ageBtn =new QPushButton;ageBtn->setText(tr("修改年龄"));scoreLabel1 =new QLabel;scoreLabel1->setText(tr("成绩:"));scoreLabel2 =new QLabel;scoreLabel2->setText(tr("80"));                 	//成绩的初始值scoreLabel2->setFrameStyle(QFrame::Panel|QFrame::Sunken);scoreBtn =new QPushButton;scoreBtn->setText(tr("修改成绩"));//新建布局mainLayout =new QGridLayout(this);mainLayout->addWidget(nameLabel1,0,0);mainLayout->addWidget(nameLabel2,0,1);mainLayout->addWidget(nameBtn,0,2);mainLayout->addWidget(sexLabel1,1,0);mainLayout->addWidget(sexLabel2,1,1);mainLayout->addWidget(sexBtn,1,2);mainLayout->addWidget(ageLabel1,2,0);mainLayout->addWidget(ageLabel2,2,1);mainLayout->addWidget(ageBtn,2,2);mainLayout->addWidget(scoreLabel1,3,0);mainLayout->addWidget(scoreLabel2,3,1);mainLayout->addWidget(scoreBtn,3,2);mainLayout->setMargin(15);mainLayout->setSpacing(10);//连接信号和槽函数connect(nameBtn,SIGNAL(clicked()),this,SLOT(ChangeName()));connect(sexBtn,SIGNAL(clicked()),this,SLOT(ChangeSex()));connect(ageBtn,SIGNAL(clicked()),this,SLOT(ChangeAge()));connect(scoreBtn,SIGNAL(clicked()),this,SLOT(ChangeScore()));
}
/*
QString getText
(QWidget* parentz, 				//标准输入对话框的父窗口const QString title,            //标准输入对话框的标题名const QString label,            //标准输入对话框的标签提示QLineEdit::EchoMode mode=QLineEdit::Normal,	//指定标准输入对话框中 QLineEdit 控件的输入模式const QString& text=QString( ),	//标准字符串输入对话框弹出时QLineEdit 控件中默认出现的文字bool* ok=0, 					//指示标准输入对话框的哪个按钮被触发,若为 true, 则表示用户单击了 “OK” (确定)按钮;若为 false, 则表示用户单击了 “Cancle” (取消) 按钮Qt::WindowFlags flags=0         //指明标准输入对话框的窗体标识
);
*/
void InputDlg::ChangeName()
{bool ok;QString text=QInputDialog::getText(this,tr("标准字符串输入对话框"),tr("请输入姓名:"), QLineEdit::Normal,nameLabel2->text(),&ok);if (ok && !text.isEmpty())nameLabel2->setText(text);
}
/*
QString getltem
(QWidget* parent, //标准输入对话框的父窗口const QString& title,//标准输入对话框的标题名const QString& label,//标准输入对话框的标签提示const QStringList& items,//指定标准输入对话框中QComboBox控件显示的可选条目为一个QStringList对象int current=0,//标准条目选择对话框弹出时QComboBox控件中默认显示的条目序号bool editable=true, //指定 QComboBox 控件中显示的文字是否可编辑bool* ok=0,//指示标准输入对话框的哪个按钮被触发,若ok为true, 则表示用户单击了“OK”(确定)按钮;若ok为false, 则表示用户单击了“Cancle"(取消)按钮Qt::WindowFlags flags=0//指明标准输入对话框的窗口标识
);
*/void InputDlg::ChangeSex()
{QStringList SexItems;SexItems << tr("男") << tr("女");bool ok;QString SexItem = QInputDialog::getItem(this, tr("标准条目选择对话框"),tr("请选择性别:"), SexItems, 0, false, &ok);if (ok && !SexItem.isEmpty())sexLabel2->setText(SexItem);
}
/*
int getInt
(QWidget* parent,        //标准输入对话框的父窗口const QString& title,   //标准输入对话框的标题名const QString& label,   //标准输入对话框的标签提示int value=0,            //指定标准输入对话框中QSpinBox控件的默认显示值int min=-2147483647,    //指定 QSpinBox 控件的数值范围int max=2147483647,int step=1,             //指定 QSpinBox 控件的步进值bool* ok=0,             //用于指示标准输入对话框的哪个按钮被触发。若ok为true, 则表示用户单击了“0K”(确定) 按钮;若ok为false, 则表示用户单击了 “Cancel" (取消) 按钮Qt::WindowFlags flags=0 //指明标准输入对话框的窗口标识
);
*/
void InputDlg::ChangeAge()
{bool ok;int age = QInputDialog::getInt(this, tr("标准int类型输入对话框"),tr("请输入年龄:"), ageLabel2->text().toInt(&ok), 0, 100, 1, &ok);if (ok)ageLabel2->setText(QString(tr("%1")).arg(age));
}
/*
double getDouble
(QWidget* parent,//标准输入对话框的父窗口const QString& title,//标准输入对话框的标题名const QString& label,//标准输入对话框的标签提示double value=0,//指定标准输入对话框中 QSpinBox 控件默认的显示值double min=-2147483647,//指定 QSpinBox 控件的数值范围double max=2147483647,int decimals=1,//指定 QSpinBox 控件的步进值bool* ok=0,//用于指示标准输入对话框的哪个按钮被触发,若ok为true, 则表示用户单击了“OK”(确定)按钮;若ok为false, 则表示用户单击了“Cancel"(取消)按钮Qt::WindowFlags flags=0//指明标准输入对话框的窗口标识
);
*/
void InputDlg::ChangeScore()
{bool ok;double score = QInputDialog::getDouble(this, tr("标准double类型输入对话框"),tr("请输入成绩:"),scoreLabel2->text().toDouble(&ok), 0, 100, 1, &ok);if(ok)scoreLabel2->setText(QString(tr("%1")).arg(score));
}

MsgBoxDlg文件:

//添加的头文件
#include <QLabel>
#include <QPushButton>
#include <QGridLayout>
#include <QDialog>
class MsgBoxDlg : public QDialog
{Q_OBJECT
public:MsgBoxDlg(QWidget* parent=0);
private slots:void showQuestionMsg();void showInformationMsg();void showWarningMsg();void showCriticalMsg();void showAboutMsg();void showAboutQtMsg();
private:QLabel *label;QPushButton *questionBtn;QPushButton *informationBtn;QPushButton *warningBtn;QPushButton *criticalBtn;QPushButton *aboutBtn;QPushButton *aboutQtBtn;QGridLayout *mainLayout;
};
#include "msgboxdlg.h"
#include <QMessageBox>
MsgBoxDlg::MsgBoxDlg(QWidget *parent) :QDialog(parent)
{setWindowTitle(tr("标准消息对话框的实例"));              //设置对话框的标题//新建控件对象label =new QLabel;label->setText(tr("请选择一种消息框"));questionBtn =new QPushButton;questionBtn->setText(tr("QuestionMsg"));informationBtn =new QPushButton;informationBtn->setText(tr("InformationMsg"));warningBtn =new QPushButton;warningBtn->setText(tr("WarningMsg"));criticalBtn =new QPushButton;criticalBtn->setText(tr("CriticalMsg"));aboutBtn =new QPushButton;aboutBtn->setText(tr("AboutMsg"));aboutQtBtn =new QPushButton;aboutQtBtn->setText(tr("AboutQtMsg"));//布局mainLayout =new QGridLayout(this);mainLayout->addWidget(label,0,0,1,2);mainLayout->addWidget(questionBtn,1,0);mainLayout->addWidget(informationBtn,1,1);mainLayout->addWidget(warningBtn,2,0);mainLayout->addWidget(criticalBtn,2,1);mainLayout->addWidget(aboutBtn,3,0);mainLayout->addWidget(aboutQtBtn,3,1);//事件关联connect(questionBtn,SIGNAL(clicked()),this,SLOT(showQuestionMsg()));connect(informationBtn,SIGNAL(clicked()),this,SLOT(showInformationMsg()));connect(warningBtn,SIGNAL(clicked()),this,SLOT(showWarningMsg()));connect(criticalBtn,SIGNAL(clicked()),this,SLOT(showCriticalMsg()));connect(aboutBtn,SIGNAL(clicked()),this,SLOT(showAboutMsg()));connect(aboutQtBtn,SIGNAL(clicked()),this,SLOT(showAboutQtMsg()));
}
/*
StandardButton QMessageBox::question
(QWidget* parent,        //消息框的父窗口指针const QString& title,   //消息框的标题栏const QString& text,    //消息框的文字提示信息StandardButtons buttons=Ok,             //填写希望在消息框中出现的按钮,可根据需要在标准按钮中选择,用|连写,默认为QMessageBox::Ok。StandardButton defaultButton=NoButton   //默认按钮,即消息框出现时,焦点默认处于哪个按钮上
);
*/
void MsgBoxDlg::showQuestionMsg()
{label->setText(tr("Question Message Box"));switch(QMessageBox::question(this,tr("Question消息框"),tr("您现在已经修改完成,是否要结束程序?"),QMessageBox::Ok|QMessageBox::Cancel,QMessageBox::Ok)){case QMessageBox::Ok:label->setText("Question button/Ok");break;case QMessageBox::Cancel:label->setText("Question button/Cancel");break;default:break;}return;
}
/*
StandardButton QMessageBox::information
(QWidget*parent,         //消息框的父窗口指针const QString& title, 	//消息框的标题栏const QString& text, 	//消息框的文字提示信息StandardButtons buttons = OK,           //同 Question 消息框的注释内容StandardButton defaultButton=NoButton   //同 Question 消息框的注释内容
);
*/
void MsgBoxDlg::showInformationMsg()
{label->setText(tr("Information Message Box"));QMessageBox::information(this,tr("Information消息框"),tr("这是Information消息框测试,欢迎您!"));return;
}
/*
StandardButton QMessageBox::warning
(QWidget* parent,        //消息框的父窗口指针const QString& title,   //消息框的标题栏const QString& text,    //消息框的文字提示信息StandardButtons buttons=Ok,             //同Question 消息框的注释内容StandardButton defaultButton=NoButton   //同 Question 消息框的注释内容
);
*/
void MsgBoxDlg::showWarningMsg()
{label->setText(tr("Warning Message Box"));switch(QMessageBox::warning(this,tr("Warning消息框"),tr("您修改的内容还未保存,是否要保存对文档的修改?"),QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel,QMessageBox::Save)){case QMessageBox::Save:label->setText(tr("Warning button/Save"));break;case QMessageBox::Discard:label->setText(tr("Warning button/Discard"));break;case QMessageBox::Cancel:label->setText(tr("Warning button/Cancel"));break;default:break;}return;
}
/*
StandardButton QMessageBox::critical
(QWidget* parent,        //消息框的父窗口指针const QString& title,   //消息框的标题栏const QString& text,    //消息框的文字提示信息StandardButtons buttons=Ok,             //同 Question 消息框的注释内容StandardButton defaultButton=NoButton   //同 Question 消息框的注释内容
);
*/
void MsgBoxDlg::showCriticalMsg()
{label->setText(tr("Critical Message Box"));QMessageBox::critical(this,tr("Critical消息框"),tr("这是一个Critical消息框测试!"));return;
}
/*
void QMessageBox::about
(QWidget* parent,        //消息框的父窗口指针const QString& title,   //消息框的标题栏const QString& text     //消息框的文字提示信息
);
*/
void MsgBoxDlg::showAboutMsg()
{label->setText(tr("About Message Box"));QMessageBox::about(this,tr("About消息框"),tr("这是一个About消息框测试!"));return;
}
/*
void QMessageBox::aboutQt
(QWidget* parent,                //消息框的父窗口指针const QString& title=QString()  //消息框的标题栏
);
*/
void MsgBoxDlg::showAboutQtMsg()
{label->setText(tr("About Qt Message Box"));QMessageBox::aboutQt(this,tr("About Qt消息框"));return;
}

 效果展示:

三、代码解析

        标准基本对话框所需的静态函数,如下表所示。

四、总结

        使用合适的对话框,可以给用户带来很好的使用体验。当标准消息框都不能满足开发的需求时,可以自定义消息框。

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

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

相关文章

1.4补码范围,溢出,补码加减法、加法器、竞争与冒险、杂项

正数三码合一 负数的原码有1的符号位&#xff0c;反码为除了符号位以外全部取反&#xff0c;补码在反码的基础上再加1 移码的符号位中0表示负数&#xff0c;1表示正数&#xff0c;简单来说&#xff0c;原码的补码数值位不变&#xff0c;符号位取反就是移码。 对于8位寄存器: …

【docker】一文讲完docker搭建私有仓库

一、docker搭建私有仓库方法总结 搭建Docker私有仓库主要有以下几种方式&#xff1a; 使用Docker官方提供的Registry镜像&#xff1a;Docker官方提供了一个用于构建私有镜像仓库的Registry镜像&#xff0c;只需将镜像下载并运行容器&#xff0c;然后暴露5000端口即可使用。可以…

Go语言中的HTTP路由处理

在Web开发中&#xff0c;路由处理是至关重要的部分。它决定了当用户访问某个URL时&#xff0c;服务器应该如何响应。Go语言提供了多种库和工具来处理HTTP路由。下面&#xff0c;我们将深入了解如何在Go语言中处理HTTP路由。 Go语言的net/http包本身提供了基本的功能来处理路由…

大数据毕业设计:python房源数据爬虫分析预测系统+可视化 +商品房数据(源码+讲解视频)✅

毕业设计&#xff1a;2023-2024年计算机专业毕业设计选题汇总&#xff08;建议收藏&#xff09; 毕业设计&#xff1a;2023-2024年最新最全计算机专业毕设选题推荐汇总 &#x1f345;感兴趣的可以先收藏起来&#xff0c;点赞、关注不迷路&#xff0c;大家在毕设选题&#xff…

【Spring 篇】Spring:轻松驾驭 Java 世界的利器

在 Java 开发领域&#xff0c;Spring 框架无疑是一颗璀璨的明星&#xff0c;它不仅提供了全面的企业级特性&#xff0c;还为开发者提供了简便而强大的开发方式。本文将深入探讨 Spring 框架的简介、配置和快速入门&#xff0c;带你轻松驾驭 Java 世界的利器。 Spring 简介 Sp…

golang sync.Once实现只执行一次的操作

sync.Once 是 Go 语言标准库中的一个类型&#xff0c;用于实现只执行一次的操作。 sync.Once 类型提供了一个方法 Do&#xff0c;它接受一个函数作为参数&#xff0c;并且确保该函数只会被执行一次&#xff0c;无论 Do 方法被调用多少次。 sync.Once 的工作原理是通过一个布尔…

第一节-网络的基本概念

R&S路由交换 Datacom数通数据通信 某个设备产生了数据之后&#xff0c;借助整体的网络到达目的地的过程 工业标准&#xff1a;通信型的标准&#xff1a;TCP/IP 1.统一化 2.分层管理 3.故障定位比较明确 OSI&#xff1a;七层模型&#xff08;开放式系统互联&#xff…

双指针算法--最长列许不重复子序列

目录 最长列许不重复子序列思路&#xff1a;此题思路;解题代码 原题链接 最长列许不重复子序列 给定一个长度为 n 的整数序列&#xff0c;请找出最长的不包含重复的数的连续区间&#xff0c;输出它的长度。 输入格式 第一行包含整数 n 。 第二行包含 n 个整数&#xff08;均…

YOLOv8改进:IoU系列篇 | Shape-IoU结合基于辅助边框的Inner-IoU损失,实现再次创新

🚀🚀🚀本文改进: Shape-IoU结合基于辅助边框的Inner-IoU损失,小目标检测实现涨点,基于辅助边框的优化前提下,更加关注边界框本身的形状和尺度来计算损失 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研…

Maven(mvn)的学习下载和配置

文章目录 Maven&#xff08;mvn&#xff09;1.Maven 是什么&#xff1f;2.Maven做什么&#xff1f;2.1传统方式对项目的管理2.2Maven对jar包的管理 3.Maven怎么学3.1Maven如何创建项目3.2Maven的下载与配置3.3Maven的项目结构3.4Maven依赖的引入3.5Maven依赖的剔除3.6Maven依赖…

Python与C++混合编程

概述 Py是解释型语言&#xff0c;编译时不直接翻译成汇编语言而是字节码&#xff0c;在py的虚拟机中运行&#xff0c;在进行数据运算的场下&#xff0c;存在性能瓶颈。C性能卓越&#xff0c;但学习门槛高且开发效率比py低&#xff0c;可用于密集型计算并用Python进行调用。 也…

1050. 鸣人的影分身(dp划分)

题目&#xff1a; 1050. 鸣人的影分身 - AcWing题库 输入样例&#xff1a; 1 7 3输出样例&#xff1a; 8 思路&#xff1a; 代码&#xff1a; #include<iostream> using namespace std; const int N20; int f[N][N]; int main() {int T,m,n;cin>>T;while(T--)…

小红书玩法策略汇总,品牌运营攻略

众所周知&#xff0c;小红书平台凭借其出色的品宣传能力和产品种草能力&#xff0c;而稳坐内容平台C位。那么不论是作为达人&#xff0c;还是品牌方&#xff0c;进驻小红书平台后该如何进行传播&#xff0c;获取流量呢?我们今天和大家分享下小红书玩法策略汇总&#xff0c;品牌…

最长连续序列【哈希】

Problem: 128. 最长连续序列 文章目录 思路解题方法复杂度Code 思路 用set去重并且使用hash查找某个数存在与否 解题方法 遍历每个数&#xff0c;先判断这个数-1是否在hash表里面&#xff0c;如果在则跳过&#xff0c;否则从这个数开始一直枚举&#xff0c;一直到枚举到的数不在…

python练习3【题解///考点列出///错题改正】

一、单选题 1.【单选题】 ——可迭代对象 下列哪个选项是可迭代对象&#xff08; D&#xff09;&#xff1f; A.(1,2,3,4,5) B.[2,3,4,5,6] C.{a:3,b:5} D.以上全部 知识点补充——【可迭代对象】 可迭代对象&#xff08;iterable&#xff09;是指可以通过迭代&#xff…

Calendar日历类型常见方法

Calendar日历类型常见方法&#xff1a; 概括&#xff1a;1.get( )方法2、set( ) 设置时间3、常用的add方法4、after()方法表示的时间是否在指定时间之后&#xff0c; before( ) 方法则之前&#xff0c; 返回判断结果4.1、compareTo比较器 概括&#xff1a; Calendar类是一个抽…

专业课130+,总分390+四川大学951信号与系统考研通信,电子信息经验分享

今年专业课130&#xff0c;总分390&#xff0c;顺利上岸&#xff0c;将近一年复习一路走来&#xff0c;感慨很多&#xff0c;希望以下经历可以给后来的同学提供一些参考。 初试备考经验 公共课&#xff1a;三门公共课&#xff0c;政治&#xff0c;英语&#xff0c;数学。在备…

Visual Studio 2022进行文件差异比较

前言 Visual Studio 2022在版本17.7.4中发布在解决方案资源管理器中比较文件的功能&#xff0c;通过使用此功能&#xff0c;可以轻松地查看两个文件之间的差异&#xff0c;包括添加、删除和修改的代码行。可以逐行查看差异&#xff0c;并根据需要手动调整和编辑文件内容以进行…

Web安全防护

一、Web安全简介 二、Web攻击来源 1、客户端&#xff1a; 2、服务器&#xff1a; 3、通道&#xff1a; 三、Web应用基本组成部分 URL工作过程 HTTP/HTTPS HTTP有两类报文 HTTP请求报头 HTTP协议请求方法 状态码 状态码组成 三、Cookie概述 Cookie和Session的关系 …

阿里云服务器配置选择之公司ERP办公系统配置推荐

公司OA、ERP等办公系统如何选择阿里云服务器配置&#xff1f;可以选择第七代企业级独享型云服务器&#xff0c;ECS通用型g7、计算型c7或内存型r7实例&#xff0c;4核CPU8G内存、8核16G、4核16G等配置&#xff0c;活动 https://t.aliyun.com/U/bLynLC 实例规格使用场景vCPU内存…