十、基本对话框大集合(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;
}

 效果展示:

三、代码解析

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

相关类类说明静态函数函数说明
QFileDialog 类标准文件对话框getOpenFileName获得用户选择的文件名
getSaveFileName获得用户保存的文件名
getExistingDirectory获得用户选择的已存在的目录名
getOpenFileNames获得用户选择的文件名列表
QColorDialog 类标准颜色对话框getColor获得用户选择的颜色值
QFontDialog 类标准字体对话框getFont获得用户选择的字体
QInputDialog 类标准输入对话框getText标准字符串输入对话框
getltem下拉表条目输入框
getlntint 类型数据输入对话框
getDoubledouble 类型数据输入对话框
QMessageBox 类消息对话框QMessageBox::questionQuestion 消息框
QMessageBox::informati
on
Information 消息框

QMessageBox::warning

Warning消息框

QMessageBox::critical

Critical 消息框

QMessageBox::about

About 消息框

QMessageBox::aboutQt

About Qt 消息框

四、总结

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

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

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

相关文章

leecode | 字符串中的额外字符

题意&#xff1a;给定一个s字符串&#xff0c;和一个字典 字符串数组d&#xff0c;现在将字符串通过字典中的字符串数组把s切分&#xff0c;求最后剩下无法再切的字符串的长度思路&#xff1a;动态规划 倒着切 s[n-1] 切不了 那么问题转换成 n-1 找到找到一个j 使得 s[j, n-1]…

基于卷积神经的车牌识别系统

项目介绍 本项目是一个基于卷积神经网络的车牌识别系统&#xff0c;旨在通过图像识别技术自动检测和识别车牌&#xff0c;并判断车牌类型。系统可以识别蓝牌、黄牌&#xff08;单双行&#xff09;、绿牌、大型新能源&#xff08;黄绿&#xff09;、领使馆车牌、警牌、武警牌&a…

C#.Net学习笔记——CLR核心机制

一、CLR基本介绍 &#xff08;1&#xff09;C(Common) L&#xff08;Language&#xff09; R&#xff08;Runtime&#xff09; IL的运行环境 &#xff08;2&#xff09;从下图可以看到&#xff0c;我们的计算机会先把我们写的语言&#xff0c;编写成IL语言&#xff0c;再给计…

21、Kubernetes核心技术 - 高可用集群搭建(kubeadm+keepalived+haproxy)

目录 一、简介 二、高可用集群架构说明 三、部署环境说明 四、高可用集群搭建 (1)、初始化所有节点 (2)、修改host文件 (3)、调整内核参数 (4)、所有节点安装Docker (4-1)、配置 docker 的阿里 yum 源 (4-2)、yum 安装 docker (4-3)、配置 docker 的镜像源 (4-4)…

攀登者2 - 华为OD统一考试

OD统一考试 分值: 200分 题解: Java / Python / C++ 题目描述 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。 例如:[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下…

win10录音功能大盘点,帮你轻松搞定录音

“有人知道win10系统怎么录音吗&#xff1f;在网上找到了一段英语听力&#xff0c;本来打算保存下来&#xff0c;但是发现不能下载&#xff0c;我也不会使用电脑录音&#xff0c;真的很头疼&#xff0c;有人能帮帮我吗。” 在Windows 10系统中&#xff0c;录音是一项常见但往往…

计算机网络学习笔记(四)

文章目录 1.介绍一下HTTPS的流程。2.介绍一下HTTP的失败码。3.说一说你知道的http状态码。4. 301和302有什么区别&#xff1f;5.302和304有什么区别&#xff1f;6. 请描述一次完整的HTTP请求的过程。7.什么是重定向&#xff1f;8. 重定向和请求转发有什么区别&#xff1f;9.介绍…

04 帧 Frame

文章目录 04 帧 Frame4.1 相机相关信息4.2 特征点提取4.2.1 特征点提取 ExtractORB()4.3 ORB-SLAM2对双目/RGBD特征点的预处理4.3.1 双目视差公式4.3.2 双目图像特征点匹配 ComputeStereoMatches()4.3.3 根据深度信息构造虚拟右目图像&#xff1a;ComputeStereoFromRGBD() 4.4 …

书生·浦语大模型全链路开源体系 学习笔记 第二课

基础作业&#xff1a; 使用 InternLM-Chat-7B 模型生成 300 字的小故事&#xff08;需截图&#xff09;。熟悉 hugging face 下载功能&#xff0c;使用 huggingface_hub python 包&#xff0c;下载 InternLM-20B 的 config.json 文件到本地&#xff08;需截图下载过程&#xf…

Dijkstra算法——邻接矩阵实现+路径记录

本文是在下面这篇文章的基础上做了一些补充&#xff0c;增加了路径记录的功能。具体Dijkstra的实现过程可以参考下面的这篇文章。 [jarvan&#xff1a;Dijkstra算法详解 通俗易懂](Dijkstra算法详解 通俗易懂 - jarvan的文章 - 知乎 https://zhuanlan.zhihu.com/p/338414118) …

谷歌提出「边界注意力」模型,实现超越像素级检测精度!微弱边界也逃不过

有些情况下&#xff0c;当面临分辨率较低的图像时&#xff0c;可能会在进行诸如目标检测和图像分割等任务时遇到一些挑战和阻碍。这是因为低分辨率图像可能丢失了细节信息&#xff0c;使得计算机视觉系统难以准确捕捉和理解图像中的关键特征。在这种背景下&#xff0c;传统的方…

教程:Centos6迁移旧虚拟机文件后的网络配置教程,完美解决虚拟机移动后的网络ip变化问题

博主在工作后,想整整之前大学的虚拟机集群,因此特意从之前的旧电脑把虚拟机文件给拷贝了过来,在导入到vm-workstation,顺便能启动虚拟机后,发现之前的静态ip已经跟现在的宿主机网络不一样。想着重新配置,但觉得太麻烦,故想到了修改网卡的mac地址+网卡重配置方法,完美解…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -后端架构搭建

锋哥原创的uniapp微信小程序投票系统实战&#xff1a; uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

普中STM32-PZ6806L开发板(有点悲伤的故事续-人灯还未了)

简介 继上篇 普中STM32-PZ6806L开发板(有点悲伤的故事) 说到 关于 普中STM32-PZ6806L开发板的LED流水灯也被烧坏掉了&#xff0c;再也无法玩流水灯, 内心充满了只会流水灯的不甘, 流水灯就是单片机的Hello World&#xff0c;怎么能没有呢&#xff1f; 事情发展 好巧不巧想起最近…

报错解决:RuntimeError: Error building extension ‘bias_act_plugin‘

系统&#xff1a; Ubuntu22.04&#xff0c; nvcc -V&#xff1a;11.8 &#xff0c; torch&#xff1a;2.0.0cu118 一&#xff1a;BUG内容 运行stylegan项目的train.py时遇到报错&#x1f447; Setting up PyTorch plugin "bias_act_plugin"... Failed! /home/m…

【linux】tcpdump 使用

tcpdump 是一个强大的网络分析工具&#xff0c;可以在 UNIX 和类 UNIX 系统上使用&#xff0c;用于捕获和分析网络流量。它允许用户截取和显示发送或接收过网络的 TCP/IP 和其他数据包。 一、安装 tcpdump 通常是默认安装在大多数 Linux 发行版中的。如果未安装&#xff0c;可…

每天刷两道题——第十天

1.1和为k的子数组 给你一个整数数组 n u m s nums nums 和一个整数 k k k &#xff0c;请你统计并返回 该数组中和为 k k k 的子数组的个数 。子数组是数组中元素的连续非空序列。 输入&#xff1a;nums [1,2,3], k 3 输出&#xff1a;2 前缀和 1.2如何使用 前缀和的…

Jmeter扩展函数?年薪50W+的测试大佬教你怎么玩

很多同学&#xff0c;都问我&#xff1a;“老师&#xff0c;我的 jmeter 里面&#xff0c;怎么没有 MD5 函数&#xff0c;base64 函数也没有&#xff0c;我是不是用了假的 jmeter&#xff1f;” 前言 哈哈哈&#xff0c;不是的。jmeter 的函数&#xff0c;有自带函数和扩展函数…

pycharm调整漂亮的颜色主题

主题样式&#xff1a; 一、设置主题为白色 二、pycharm 如何设置字体颜色 打开pycharm编辑器&#xff0c;file > settings > editor > color scheme > python > 你也可以直接用我资源中的配置好的文件