3、QT 的基础控件的使用

一、qFileDialog 文件窗体

Header:
#include <QFileDialog> 
qmake:
QT += widgets
Inherits:
QDialog

静态函数接口:

void Widget::on_pushButton_clicked()
{
    //获取单个文件的路径名
    QString filename = QFileDialog :: getOpenFileName(this, 
                                                      tr("Open File"), 
                                                      "./", 
                                                      tr("C File(*.cpp *.c)"));

    ui->label->setText(filename);
}

void Widget::on_pushButton_2_clicked()
{

    //获取多个文件的路径名
    QStringList file = QFileDialog :: getOpenFileNames(this,
                                                       "Select one or more file to open",
                                                       "/home",
                                                       "all(*)");
    for(int i = 0; i < file.length(); i++)
    {
        qDebug() << file.at(i) << endl;;
    }
}

QStringList 的使用:

append(const T &)往list中添加字符串
at(int)const T &//取出字符串中的数据
length()const : int //返回list的元素个数
removeAt(int)//删除某一个

二、QColorDialog 颜色窗体

Header:
#include <QColorDialog> 
qmake:
QT += widgets
Inherits:
QDialog

静态函数接口:

获取颜色值:
----------
QColor  getColor(const QColor &initial =Qt::white, QWidget *parent = nullptr, constQString &title = QString()
QColorDialog::ColorDialogOptions options =ColorDialogOptions())

直接调用全部使用默认参数
----------------------
QColor color = QColorDialog::getColor();

QColor 类的使用:
---------------
//获取当前颜色的R G B 值
void getRgb(int *r, int *g, int *b, int *a= nullptr) const
//获取当前颜色的名称
QString name() const
//设置当前颜色的RGB 值
void setRgb(int r, int g, int b, int a = 255)

练习:

void myColor::on_pushButton_clicked()
{
    //打开一个颜色窗体
    QColor color = QColorDialog :: getColor();

    //获取颜色值
    int r, g, b;
    color.getRgb(&r, &g, &b);
    qDebug() <<  r  << ":"  << g <<":" << b;
    qDebug() << color.name();

    QString c = QString("background-color: rgb(%1,%2,%3);").arg(r).arg(g).arg(b);

    //设置背景颜色
    this->setStyleSheet(c);
}

三、QFontDialog 字体窗口

Header:
#include <QFontDialog> 
qmake:
QT += widgets
Inherits:
QDialog

静态接口:

官方例子:
--------
bool ok;
QFont font = QFontDialog::getFont(&ok,this);
if (ok) {
} else {
}

QFont 类的使用:
--------------
QString family() const 显示当前字体格式
void setFamily(const QString &family) 设置字体格式
int pointSize() const 获取当前字体大小
void setPointSize(int pointSize) 设置字体的大小
//其他控件的字体设置接口
setFont(const QFont &)

练习:

void myFont::on_pushButton_clicked()
{
    bool ok;
    QFont font = QFontDialog :: getFont(&ok, this);

    if(ok)
    {
        qDebug() << "选择字体成功" << endl;
        qDebug() << font.family();//字体的格式
        qDebug() << font.pointSize();//字体的大小

        this->setFont(font);//设置当前界面的字体
    }
    else
    {
        qDebug() << "失败" << endl;

    }
}

四、QInputDialog 文本输入窗体

Header:
#include <QInputDialog>
qmake:
QT += widgets

静态接口

//获取浮点数据
double getDouble(QWidget *parent, const QString&title, const QString &label)
//获取整形
int getInt(QWidget *parent, const QString &title, const QString &label)
//获取列表的数据项
QString getItem(QWidget *parent, const QString &title, const QString &label, constQStringList &items)
//获取文本
QString getText(QWidget *parent, const QString &title, const QString &label)

parent : 依赖的窗体
title:标题
label:提示信息

练习:

//获取浮点数据
void myInput::on_pushButton_clicked()
{
    double date = QInputDialog :: getDouble(this, "请输入浮点数据", "精度为.1", 0, -100, 100, 3);
    ui->label->setNum(date);
}

void myInput::on_pushButton_2_clicked()
{
    //定义一个列表
    QStringList item;

    //往列表中添加内容
    item.append("苹果");
    item.append("雪梨");
    item.append("香蕉");
    item.append("西瓜");

    QString date = QInputDialog :: getItem(this, "请选择", "请选择", item);

    ui->label->setText(date);
}

五、QMessageBox消息窗体

QMessageBox Class
Header:
#include <QMessageBox>
qmake:
QT += widgets

静态函数接口

//关于接口

QMessageBox::about(this,"关于","生产与1998......");

QMessageBox::StandardButton critical(this, "错误", "有误",QMessageBox::Ok)

QMessageBox::StandardButton information(this, "信息", "生产与1998......", QMessageBox::Ok)

QMessageBox::StandardButton question(this, "问题", "请问", QMessageBox::Yes | QMessageBox::No)

QMessageBox::StandardButton warning(this, "警告", "警告", QMessageBox::Ok)

//提示接口
int ret = QMessageBox::warning(this,
tr("My Application"), 
tr("The document has been modified.\n"
"Do youwant to save your changes?"),
QMessageBox::Save | QMessageBox::Discard|QMessageBox::Cancel,
QMessageBox::Save);

在这里插入图片描述

窗口Logo:

  • 按照需要使用对应的接口函数
    在这里插入图片描述

练习:

void myMwssage::on_pushButton_clicked()
{
    int ret = QMessageBox :: warning(this, tr("温馨提示"),
                                           tr("今天吃饭了吗"),
                                           QMessageBox :: Yes | QMessageBox :: No);
    if(ret == QMessageBox :: Yes)
    {
        QMessageBox :: warning(this, tr("温馨提示"),
                                     tr("健康生活从吃饭开始\n"),
                                     QMessageBox :: Ok);
    }
    else if(ret == QMessageBox :: No)
    {
        QMessageBox :: warning(this, tr("温馨提示"),
                                     tr("乖乖,宝宝,快去吃饭\n"),
                                     QMessageBox :: Ok);
    }
}

按钮的选择:

在这里插入图片描述

六、QT基础控件的使用

1、Layouts布局控件的使用

在这里插入图片描述
2、Spacer控件的使用

在这里插入图片描述
3、Button控件的使用

在这里插入图片描述
①、pushbutton的使用

setIcon(const QIcon &) //设置按钮的小图标
setIconSize(const QSize &) //设置按钮的小图标大小
setEnabled(bool) //设置按钮是否能点击

按钮的信号:
----------
void clicked(bool checked = false) 单击
void pressed() 按下
void released() 松开
void toggled(bool checked) 状态切换

②、QToolButton的使用

//选择的菜单信号
void triggered(QAction *action)
//设置工具按钮的菜单
void setMenu(QMenu *menu)
QMenu 类的使用
--------------
QMenu(const QString &title, QWidget *parent = nullptr)
QAction *addAction(const QString &text) //添加菜单
QAction *addAction(const QIcon &icon, constQString &text)
//显示菜单
ui->toolButton->showMenu();

练习:

#include "mybutton.h"
#include "ui_mybutton.h"
#include "QMenu"

myButton::myButton(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::myButton)
{
    ui->setupUi(this);

    //设置按钮的状态为不可点击
    ui->pushButton->setEnabled(true);

     //设置菜单
    ui->toolButton->setText("菜单栏");

    QMenu *m = new QMenu("我的菜单");

    m->addAction("辣椒炒辣椒");
    m->addAction("鸡蛋炒鸡蛋");
    m->addAction("红烧番薯");

    ui->toolButton->setMenu(m);
}

myButton::~myButton()
{
    delete ui;
}

void myButton::on_toolButton_triggered(QAction *arg1)
{
    QString str = arg1->text();

    ui->label->setText(str);
}

void myButton::on_toolButton_clicked()
{
    ui->toolButton->showMenu();
}

//点击radioButton
void myButton::on_radioButton_clicked(bool checked)
{
    if(checked)
    {
        ui->label->setText("选中");
    }
    else
    {
        ui->label->setText("松开");
    }
}

void myButton::on_checkBox_clicked(bool checked)
{
    ui->label->setText(ui->checkBox->text());
}

void myButton::on_checkBox_stateChanged(int arg1)
{
    ui->label->setNum(arg1);
}

七、item widget 视图的使用

1、listWidget的使用

QListWidget Class
Header:
#include <QListWidget>
qmake:
QT += widgets

接口函数

添加列表项信息:
void addItem(const QString &label)
void addItem(QListWidgetItem *item)
void addItems(const QStringList &labels)
-------------
在第几行插入:
void insertItem(int row, const QString&label)
-------------
取第几行的信息:
QListWidgetItem *item(int row) const
-------------
去除第几行:
QListWidgetItem *takeItem(int row)

-------------------选择信号-------------------------
void currentRowChanged(int currentRow) //选择第几行信号
void itemClicked(QListWidgetItem *item) //点击信号
void itemDoubleClicked(QListWidgetItem*item)//双击信号

-------------------QListWidgetItem类的使用-------------------------
QListWidgetItem(const QString &text);
QListWidgetItem(const QIcon &icon, constQString &text);

练习:

#include "mylistwidget.h"
#include "ui_mylistwidget.h"
#include <QFileDialog>

mylistWidget::mylistWidget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::mylistWidget)
{
    ui->setupUi(this);

    //添加字符
    ui->listWidget->addItem("小花");

    //添加图标
    ui->listWidget->addItem(new QListWidgetItem(QIcon("D:/2024/QT_Creator/003/work/pic/ma.jpg"), "二维码"));
}

mylistWidget::~mylistWidget()
{
    delete ui;
}

//双击取出list中的内容
void mylistWidget::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{
    QString str = item->text();

    ui->label->setText(str);
}

void mylistWidget::on_pushButton_clicked()
{
    //获取图片名称
    QStringList file = QFileDialog :: getOpenFileNames(this,
                                                       "Select one or more files to open",
                                                       "/home",
                                                       "Image(*.png *.jpg)");
    //添加图片名字进入lisi
    ui->listWidget->addItems(file);
}

八、treeWidget的使用

1、添加列信息

在这里插入图片描述

2、添加项目信息

在这里插入图片描述

接口函数:

双击信号:
void itemDoubleClicked(QTreeWidgetItem *item, int column)
取出用户选择的数据:
QString msg = item->text(column); //根据行号取出数据

练习:

#include "mytreewidget.h"
#include "ui_mytreewidget.h"
#include <QDebug>

mytreeWidget::mytreeWidget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::mytreeWidget)
{
    ui->setupUi(this);
}

mytreeWidget::~mytreeWidget()
{
    delete ui;
}

//双击表格信号
void mytreeWidget::on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column)
{
    QString msg = item->text(column);

    qDebug() << msg << endl;
}

九、tableWidget的使用

1、添加列的信息

在这里插入图片描述

2、添加行的信息

在这里插入图片描述

接口函数

设置第几行第几列的信息
void setItem(int row, int column, QTableWidgetItem *item)
QTableWidgetItem类的构造函数:
QTableWidgetItem(const QString &text);

信号:
void cellDoubleClicked(int row, int column)//取出用户点击的行与列
void itemDoubleClicked(QTableWidgetItem *item) //取出点击的item

练习:设计一个表格,并往表格中插入 3个学生信息,列 姓名,班级 ,成绩

#include "mytabelwidget.h"
#include "ui_mytabelwidget.h"
#include <QTableWidgetItem>
#include <QDebug>

mytabelWidget::mytabelWidget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::mytabelWidget)
{
    ui->setupUi(this);

    //初始化表格信息(需要先有表格才能插入)
    ui->tableWidget->setItem(0,0,new QTableWidgetItem("小明"));
    ui->tableWidget->setItem(0,1,new QTableWidgetItem("178"));
    ui->tableWidget->setItem(0,2,new QTableWidgetItem("100"));

    ui->tableWidget->setItem(1,0,new QTableWidgetItem("小华"));
    ui->tableWidget->setItem(1,1,new QTableWidgetItem("170"));
    ui->tableWidget->setItem(1,2,new QTableWidgetItem("90"));

    ui->tableWidget->setItem(2,0,new QTableWidgetItem("小花"));
    ui->tableWidget->setItem(2,1,new QTableWidgetItem("170"));
    ui->tableWidget->setItem(2,2,new QTableWidgetItem("80"));
}

mytabelWidget::~mytabelWidget()
{
    delete ui;
}

//双击取出选中信息
void mytabelWidget::on_tableWidget_itemDoubleClicked(QTableWidgetItem *item)
{
    qDebug() << item->text();
}

十、contain Box 的使用

1、toolBox

在这里插入图片描述

2、tabWidget

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

练习:模仿Windows 的图片浏览器制作一个图片浏览器
在这里插入图片描述

#include "mywork.h"
#include "ui_mywork.h"
#include <QMenu>
#include <QDebug>
#include <QFileDialog>
#include <QPixmap>
#include <QMessageBox>

myWork::myWork(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::myWork)
{
    ui->setupUi(this);

    ui->toolButton->setEnabled(true);
    QMenu *tool_Menu = new QMenu;
    tool_Menu->addAction("打开文件");

    ui->toolButton->setMenu(tool_Menu);
}

myWork::~myWork()
{
    delete ui;
}

//选择文件中的图片
void myWork::on_toolButton_triggered(QAction *arg1)
{
    if(arg1->text() == "打开文件")
    {
        QStringList list = QFileDialog :: getOpenFileNames(this,
                                                           "打开图片文件",
                                                           "D:/picture",
                                                           "image(*.jpg *.png)");

        ui->listWidget->addItems(list);

        //获得listWidget列表的个数
        pic_Maxcount = ui->listWidget->count();
    }
}

//选择选项
void myWork::on_toolButton_clicked()
{
    ui->toolButton->showMenu();
}


//双击显示图片
void myWork::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{
    pic_Index = ui->listWidget->row(item);
    QPixmap pic = QPixmap(item->text());
    pic = pic.scaled(ui->label->width(), ui->label->height());

    ui->label->setPixmap(pic);
}


//前一张图片
void myWork::on_pushButton_clicked()
{
    if(--pic_Index < 0)
    {
        pic_Index = pic_Maxcount - 1;
    }

    QPixmap pic = QPixmap(ui->listWidget->item(pic_Index)->text());
    pic = pic.scaled(ui->label->width(), ui->label->height());

    ui->label->setPixmap(pic);
    pha = 0;
}

//后一张图片
void myWork::on_pushButton_2_clicked()
{
    if(++pic_Index > pic_Maxcount - 1)
    {
        pic_Index = 0;
    }

    QPixmap pic = QPixmap(ui->listWidget->item(pic_Index)->text());
    pic = pic.scaled(ui->label->width(), ui->label->height());

    ui->label->setPixmap(pic);
    pha = 0;
}

//左转
void myWork::on_pushButton_3_clicked()
{
    pha = (pha + 45) % 360;;
    QString str = ui->listWidget->item(pic_Index)->text();
    QPixmap pic = QPixmap(str);
    QTransform a;
    a.rotate(pha);

    pic = pic.transformed(a);
    pic = pic.scaled(ui->label->width(), ui->label->height());

    ui->label->setPixmap(pic);
}
//右转
void myWork::on_pushButton_4_clicked()
{
    pha = (pha - 45) % 360;;
    QString str = ui->listWidget->item(pic_Index)->text();
    QPixmap pic = QPixmap(str);
    QTransform a;
    a.rotate(pha);

    pic = pic.transformed(a);
    pic = pic.scaled(ui->label->width(), ui->label->height());

    ui->label->setPixmap(pic);
}

//关于本程序(使用QMessageBox消息窗体)
void myWork::on_toolButton_2_clicked()
{

    QMessageBox::StandardButton result = QMessageBox::information(this,
                                                                  tr("关于"),
                                                                  tr("生产与1998"),
                                                                  QMessageBox :: Ok);
}

十二、InputWidget控件

1、combo Box的使用

在这里插入图片描述

Header:
#include <QComboBox> 
qmake:
QT += widgets
Inherits:
QWidget
Inherited By:
QFontComboBox

①、接口函数:

添加信息
void addItem(const QString &text, constQVariant &userData = QVariant())
void addItem(const QIcon &icon, constQString &text, constQVariant &userData =QVariant())
void addItems(const QStringList &texts)

获取用户选择的信号
void activated(const QString &text)

②、练习:

    QString str;
    str = "Hello world";

    QStringList list;
    list << "关于1";
    list << "关于2";
    list << "关于3";

    ui->comboBox->addItem(str);//一次添加一条信息
    ui->comboBox->addItems(list);//一次添加多条信息
  • 和ToolButton的区别:combo Box点击之后会把信息显示到combo Box框。tool Button点击之后不会改变tool Button框里面的数据。

2、lineEdit的使用

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

Header:
#include <QLineEdit> 
qmake:
QT += widgets
Inherits:
QWidget

①、练习

//lineEdit框内容发生变化触发
void Widget::on_lineEdit_textChanged(const QString &arg1)
{
    qDebug() << arg1 <<endl;
}

3、QDial输入控件

Header:
#include <QDial> 
qmake:
QT += widgets
Inherits:
QAbstractSlider

①、接口函数

setRange(int , int ) //设置范围
setMaximum(int) //设置最大值
setMinimum(int) //最小值
value() const : int //获取当前值
setValue(int) //设置值

信号:
void sliderMoved(int value) //滑动 值
void sliderPressed()
void sliderReleased()
void valueChanged(int value) //值发生改变

练习

//设置圆形滑动块的值
ui->dial->setRange(0, 1000);
ui->dial_2->setRange(0, 1000);

void Widget::on_dial_valueChanged(int value)
{
    //使用dial_1的值改变dial_2的值
    ui->dial_2->setValue(value);
}

十三、Display Widget

1、textBrowser控件

在这里插入图片描述

Header:
#include <QTextBrowser> 
qmake:
QT += widgets
Inherits:
QTextEdit

①、接口函数

void setPlainText(QString msg); //显示文本的内容

②、练习

//设置框里面的内容
ui->textBrowser->setPlainText("Hello world");

void Widget::on_pushButton_clicked()
{
    //按下改变框内的数据
    ui->textBrowser->setPlainText("nihao");
}

//框内数据发生变化触发信号
void Widget::on_textBrowser_textChanged()
{
    //输出框内的数据
    qDebug() << ui->textBrowser->toPlainText() << endl;
}

2、QlcdNumber控件

在这里插入图片描述

Header:
#include <QLCDNumber> 
qmake:
QT += widgets
Inherits:
QFrame

①、接口函数

显示数据
void display(const QString &s)
void display(int num)
void display(double num)

设置显示的模式
void setBinMode()//二进制显示
void setDecMode()///十进制显示
void setHexMode()//十六进制显示
void setOctMode()//八进制显示

void setDigitCount(int numDigits) //设置LCD显示的位宽

②、练习

//设置显示
ui->lcdNumber->display("Hello");
ui->lcdNumber->display(32);

//设置显示位宽
ui->lcdNumber->setDigitCount(10);
ui->lcdNumber->display(3.1415926);

//获取显示数据
double num = ui->lcdNumber->value();

3、progressBar控件

在这里插入图片描述

Header:
#include <QProgressBar> 
qmake:
QT += widgets
Inherits:
QWidget

①、接口函数

获取
int maximum() const
int minimum() const
int value() const

设置
void setRange(int minimum, int maximum)
void setValue(int value)
void setMaximum(int maximum)
void setMinimum(int minimum)

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

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

相关文章

stencilJs学习之构建 Drawer 组件

前言 在之前的学习中&#xff0c;我们已经掌握了 stencilJs 中的一些核心概念和基础知识&#xff0c;如装饰器 Prop、State、Event、Listen、Method、Component 以及生命周期方法。这些知识是构建复杂组件和应用的基础&#xff0c;而抽屉组件是一个很好的示例&#xff0c;能够…

Ceph源码解析:PG peering

集群中的设备异常(异常OSD的添加删除操作)&#xff0c;会导致PG的各个副本间出现数据的不一致现象&#xff0c;这时就需要进行数据的恢复&#xff0c;让所有的副本都达到一致的状态。 一、OSD的故障和处理办法&#xff1a; 1. OSD的故障种类&#xff1a; 故障A&#xff1a;一…

使用Dbeaver连接GaussDB

1.下载DBeaver&#xff0c;官网地址 2.安装软件&#xff0c;打开软件&#xff0c;点击数据库->驱动管理器&#xff0c;具体操作如下图&#xff1a; 3、选择新建后进行参数设置&#xff0c;如下图&#xff1a; 具体参数如下图 驱动名称: GS #随便定义 驱动类型&#…

【STM32】学习笔记(串口通信)-江科大

串口通信 通信接口硬件电路电平标准USARTUSART框图 通信接口 串口是一种应用十分广泛的通讯接口&#xff0c;串口成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通信 单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信&#…

【【Verilog典型电路设计之log函数的Verilog HDL设计】】

Verilog典型电路设计之log函数的Verilog HDL设计 log函数是一种典型的单目计算函数&#xff0c;与其相应的还有指数函数、三角函数等。对于单目计算函数的硬件加速器设计一般两种简单方法:一种是查找表的方式;一种是使用泰勒级数展开成多项式进行近似计算。这两种方式在设计方…

Linux学习之逻辑卷LVM用途和创建

理论基础 Linux文件系统建立在逻辑卷上&#xff0c;逻辑卷建立在物理卷上。 物理卷处于LVM中的最底层&#xff0c;可以将其理解为物理硬盘、硬盘分区或者RAID磁盘阵列&#xff0c;这都可以。卷组建立在物理卷之上&#xff0c;一个卷组可以包含多个物理卷&#xff0c;而且在卷组…

港交所MMDH行情协议

目录 一、交易时间 二、MMDH与OMD的差异 三、MMDH消息类型 四、MMDH的市场快照数据 内地市场数据枢纽-证券市场(OMD-MMDH) 港交所OMD-C对接笔记 - skylerjiang - 博客园 (cnblogs.com) 一、交易时间 图 1 港交所交易时间段 图 2 消息序列 二、MMDH与OMD的差异 图 3 标准…

时序预测 | MATLAB实现基于PSO-GRU、GRU时间序列预测对比

时序预测 | MATLAB实现基于PSO-GRU、GRU时间序列预测对比 目录 时序预测 | MATLAB实现基于PSO-GRU、GRU时间序列预测对比效果一览基本描述程序设计参考资料 效果一览 基本描述 MATLAB实现基于PSO-GRU、GRU时间序列预测对比。 1.MATLAB实现基于PSO-GRU、GRU时间序列预测对比&…

华为云 sfs 服务浅谈

以root用户登录弹性云服务器。 以root用户登录弹性云服务器。 安装NFS客户端。 查看系统是否安装NFS软件包。 CentOS、Red Hat、Oracle Enterprise Linux、SUSE、Euler OS、Fedora或OpenSUSE系统下&#xff0c;执行如下命令&#xff1a; rpm -qa|grep nfs Debian或Ubuntu系统下…

ssm+vue高校实验室管理系统源码和论文

ssmvue高校实验室管理系统源码和论文081 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 一&#xff0e;毕业设计的内容 本高校实验室管理系统采用Java语言、MySQL数据库&#xff0c;基于SSM框架进行开发设计&…

Spring Boot存在路径遍历漏洞CVE-2021-22118

文章目录 0.前言1.参考文档2.基础介绍1. 影响的版本2. **漏洞利用原理&#xff1a;** 3.解决方案3.1. 方案13.2. 方案23. 方案3 0.前言 背景&#xff1a;Spring Boot存在路径遍历漏洞。CVE-2021-22118: 官方 issue也有对此的记录&#xff0c;感兴趣可以看下 https://github.com…

雅思写作 三小时浓缩学习顾家北 笔记总结(二)

目录 饥饿网一百句翻译 Using government funds for pollution cleanup work can create a comfortable environment. "Allocating government funds to pollution cleanup work can contribute to the creation of a comfortable environment." Some advertise…

掌握逻辑漏洞复现技术,保护您的数字环境

环境准备 这篇文章旨在用于网络安全学习&#xff0c;请勿进行任何非法行为&#xff0c;否则后果自负。 1、支付逻辑漏洞 攻击相关介绍 介绍&#xff1a; 支付逻辑漏洞是指攻击者利用支付系统的漏洞&#xff0c;突破系统的限制&#xff0c;完成非法的支付操作。攻击者可以采…

Room的基本使用

参考&#xff1a;jetpack之Room数据库 目录 引言一、基本使用1. 导入相关引用2. 建表Entity3. 数据库操作类Dao4. 数据库RoomDatabase5. 简单使用 二、ViewModel LiveData Room 的结合开发1. 建表Entity2. 数据库操作类Dao3. 数据库RoomDatabase4. 仓库Repository5. ViewMode…

uniapp微信小程序用户隐私保护

使用wx.requirePrivacyAuthorize实现微信小程序用户隐私保护。 一、前言 微信小程序官方出了一个公告《关于小程序隐私保护指引设置的公告》。不整的话&#xff0c;后果很多授权无法使用&#xff0c;详见《小程序用户隐私保护指引内容介绍》 。 二、隐私相关设置 1、在 微信…

STM32的HAL库的定时器使用

用HAL库老是忘记了定时器中断怎么配置&#xff0c;该调用哪个回调函数。今天记录一下&#xff0c;下次再忘了就来翻一下。 系统的时钟配置&#xff0c;定时器的时钟是84MHz 这里定时器时钟是84M&#xff0c;分频是8400后&#xff0c;时基就是1/10000s&#xff0c;即0.1ms。Per…

CXL 内存交织(Memory Interleaving)

&#x1f525;点击查看精选 CXL 系列文章&#x1f525; &#x1f525;点击进入【芯片设计验证】社区&#xff0c;查看更多精彩内容&#x1f525; &#x1f4e2; 声明&#xff1a; &#x1f96d; 作者主页&#xff1a;【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#xff0c…

学习pytorch8 土堆说卷积操作

土堆说卷积操作 官网debug torch版本只有nn 没有nn.functional代码执行结果 B站小土堆视频学习笔记 官网 https://pytorch.org/docs/stable/nn.html#convolution-layers 常用torch.nn, nn是对nn.functional的封装&#xff0c;使函数更易用。 卷积核从输入图像左上角&#xf…

构建简单的Node.js HTTP服务器,发布公网远程访问的快速方法

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

线性代数的学习和整理16:什么是各种空间(类型),向量空间,距离(类型)?

目录 1 空间相关的群&#xff0c;环&#xff0c;域&#xff0c;集合&#xff0c;空间的预备知识 1.1&#xff1a;群&#xff0c;环&#xff0c;域&#xff0c;集合&#xff0c;空间的定义&#xff08;表示不懂&#xff0c;只是做个标记&#xff09; 2 空间 2.1 各种空间概念…