QT学习笔记(持续更新)

这篇具有很好参考价值的文章主要介绍了QT学习笔记(持续更新)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

QT


一、按钮

1.效果

QT学习笔记(持续更新)

2.代码

#include<QPushButton>//头文件

myWidget::myWidget(QWidget *parent)
    : QWidget(parent)
{
    //方法1
    QPushButton *btn=new QPushButton;
    //btn->show();//以顶层方式显示
    btn->setParent(this);//在myWidget窗口中
    btn->setText("按钮");//显示文本

    //方法2
    QPushButton * btn2=new QPushButton("按钮2",this);

    btn2->move(100,100);//移动按钮
    resize(600,400);//重置按钮
    setWindowTitle("窗口");//设置窗口标题
    setFixedSize(600,400);//设置窗口固定大小

    //参数:信号发送者  发送的信号(函数的地址) 信号接收者  处理的槽函数(函数地址)   
    connect(btn,&QPushButton::clicked,this,&QWidget::close);
    //功能:点击btn按钮关闭窗口

}

二、自定义信号和槽

1.自定义信号: 写在signals下,void,需要声明,不需要实现,可以有参数,可重载。
2.槽: 写在public下,void,需要声明,需要实现,可有参数,可发生重载。
3.断开信号: disconnect
4.emit: 使用emit关键字发送信号
5.示例关键代码如下:
1.widget.cpp

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //创建对象
    this->zt=new Teacher(this);
    this->st=new Student(this);

    //不带参数自定义信号和槽
    //连接
   // connect(zt,&Teacher::hu,st,&Student::treat);
    //调用函数
   // classIsOver();

    //带参数
    //函数指针-》函数地址
    void(Teacher::*ts)(QString)=&Teacher::xk;
    void(Student::*ss)(QString)=&Student::treat;
    connect(zt,ts,st,ss);
    classIsOver();
}

void Widget::classIsOver()
{
    //触发信号
    //emit zt->xk();
    emit zt->xk("计算机作业");
}

2.widget.h

#include <QWidget>
#include"teacher.h"
#include"student.h"

class Widget : public QWidget

{
    Q_OBJECT
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
private:
    Ui::Widget *ui;
    Teacher *zt;
    Student *st;
    void classIsOver();
};

3.student.cpp


#include "student.h"
#include<qdebug>
void Student::treat()
{
    qDebug()<<"下课";
}
void Student::treat(QString foodName)
{
    //显示布置“foodName的内容”
   // qDebug()<<"布置"<<foodName;
    
    qDebug()<<"布置"<<foodName.toUtf8().data();
    //QString ->chat *:先转成QByteArray再转chat*,消“”
}

4.teacher.h和student.h

class Teacher : public QObject
{
    Q_OBJECT
public:
    explicit Teacher(QObject *parent = nullptr);
signals:
    //自定义信号,void,需要声明,不需要实现,可以有参数,可以重载

    void xk();
    void xk(QString foodName);

};

class Student : public QObject
{
    Q_OBJECT
public:
    explicit Student(QObject *parent = nullptr);
    //槽函数:void,需要声明,需要实现,可有参数,可发生重载
    void treat();
    void treat(QString foodName);

signals:

};

6.效果图:
QT学习笔记(持续更新)

三、Lambda表达式

1.表达式

(1) [函数对象参数] (操作符重载函数参数) mutable->返回值{函数体}
(2) [] () {}()

2.函数对象参数

(1)空
(2)= : 值传递,所在作用范围内所有可见局部变量。
(3)&: 引用传递方式,所在作用范围内所有可见局部变量。
(4)this: 所在类中成员变量。
(5)a: 将a按值进行传递。
(6)&a: 将a按引用进行传递。

3.示例:

 //将“下课”按钮-》"lambda"按钮
    [=](){
        btn->setText("lambda");
    }();
//演示将(5)a按值传递
 QPushButton *btn2=new QPushButton("a",this);
    this->resize(600,400);
    btn2->move(100,100);
    [btn2](){
        btn2->setText("lambda2");
        //btn->setText("lambda");//’btn‘ is not captured
    }();
//输出 ret=100
int ret=[]()->int{return 100;}();
qDebug()<<"ret="<<ret;
 //利用lambda表达式,实现点击按钮,关闭窗口
    QPushButton *btn3=new QPushButton;
    btn3->setText("关闭");
    btn3->move(100,0);
    btn3->setParent(this);
    connect(btn3,&QPushButton::clicked,this,[=](){
        this->close();
        emit zt->xk("计算机");
    });
    //结果:点击”关闭“按钮,窗口关闭并输出(布置 计算机)

四、QMainWindow

1.菜单栏

(1)效果:
QT学习笔记(持续更新)
(2)代码:

#include "mainwindow.h"
#include<QMenuBar>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(600,400);

    //创建菜单栏(最多只能有一个)
    QMenuBar *bar=menuBar();
    setMenuBar(bar);//将菜单栏放入窗口中
    //创建菜单
    QMenu *fMenu=bar->addMenu("文件");
    QMenu *eMenu=bar->addMenu("编辑");

    //创建菜单项(在菜单“文件”下)
    fMenu->addAction("新建");
    fMenu->addSeparator();//添加分割线
    fMenu->addAction("打开");
}

2.工具栏

(1)效果:
QT学习笔记(持续更新)

(2)代码:

#include "mainwindow.h"
#include<QMenuBar>
#include<QToolBar>
#include<QDebug>
#include<QPushButton>

//工具栏(可以有多个)
    QToolBar *tBar=new QToolBar(this);
    //将工具栏放在窗口中的左边(Qt::LeftToolBarArea)
    addToolBar(Qt::LeftToolBarArea,tBar);

    //设置只允许左右停靠(默认在窗口中,工具栏可移动到四周停靠)
    tBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);

    //设置不允许浮动
    tBar->setFloatable(false);

    //设置不能移动(总开关)
    tBar->setMovable(false);

    //设置内容:1.与菜单栏写法一样
    tBar->addAction("新建");
    tBar->addSeparator();
    tBar->addAction("打开");
    //2.和上面菜单公用的写法
    //QAction *newAction=fMenu->addAction("新建");
    //QAction *openAction=fMenu->addAction("打开");
    //tBar->addAction(newAction);
    //tBar->addAction(openAction);

    //添加控件
    QPushButton *btn=new QPushButton("按钮",this);
    tBar->addWidget(btn);//将按钮放入工具栏中

3.状态栏

(1)效果:
QT学习笔记(持续更新)
(2)代码:

#include<QStatusBar>
#include<QLabel>
#include<QDockWidget>
#include<QTextEdit>

    //状态栏(最多一个)
    QStatusBar *sBar=statusBar();
    setStatusBar(sBar);//放入窗口中
    
    //标签控件
    QLabel *label=new QLabel("提示信息",this);
    sBar->addWidget(label);
    QLabel *label2=new QLabel("提示信息(右)",this);
    sBar->addPermanentWidget(label2);//在右侧加入提示信息

    //铆接部件(浮动窗口) 可以有多个
    QDockWidget *dw=new QDockWidget("浮动窗口",this);
    addDockWidget(Qt::BottomDockWidgetArea,dw);//位于核心/中心的下边
    //设置浮动窗口只允许上下停靠
    dw->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);

    //设置中心部件(只能有一个)
    QTextEdit *edit=new QTextEdit(this);
    setCentralWidget(edit);

五、界面文件

1.添加图标

1.前操作:
首先点击界面文件中XXX.ui进行界面设计,设计如下:QT学习笔记(持续更新)
tips:工具栏添加首先只能为英文,需要在右下角框中、text后修改为中文。
2.图标添加:


#include "mainwindow.h"
#include "ui_mainwindow.h"


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
   // ui->actionnew->setIcon(QIcon("D:/Image/a"));//添加图标


    //使用添加Qt资源
    //1.复制需要的文件-》点击项目(.cpp)右键-》在Explorer中显示-》粘贴
    //2.在Qt项目(总项目)中右键-》添加新文件-》Qt.Qt Resource File-》编辑信息并生产资源文件
    //3.点击资源文件下的XXX.qrc的右键-》Open in Editor-》添加前缀(前缀:/ 或其他)-》添加文件(选种图片后点击打开)
    //4.编译后可出现名为/的文件(图片在里面)
    ui->actionnew->setIcon(QIcon(":/Image/a"));//格式为":+前缀名+文件名"
    ui->actionopen->setIcon(QIcon(":/Image/b"));

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

3.效果图:
QT学习笔记(持续更新)

六、对话框

1.模态和非模态对话框

(1)效果:
QT学习笔记(持续更新)
(2)代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDialog>
#include<QDebug>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //点击新建按钮,弹出一个对话框
    connect(ui->actionnew,&QAction::triggered,[=](){
        //模态对话框(不可以对其他窗口操作,具有阻塞功能)
//        QDialog dlg(this);
//        dlg.resize(200,100);
//        dlg.exec();
//        qDebug()<<"模态对话框阻塞功能测试";

        //非模态对话框(可以对其他窗口操作)
        QDialog *dlg2=new QDialog(this);//防止窗口一闪而过
        dlg2->resize(200,100);
        dlg2->show();
        dlg2->setAttribute(Qt::WA_DeleteOnClose);//防止内存泄漏
    });
}
MainWindow::~MainWindow()
{
    delete ui;
}

2.消息对话框

(1)提问对话框效果:
QT学习笔记(持续更新)

(2)代码:


#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDialog>
#include<QDebug>
#include<QMessageBox>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //点击新建按钮,弹出一个对话框
    connect(ui->actionnew,&QAction::triggered,[=](){
        //消息对话框
        //QMessageBox 静态成员函数
        //参数:父亲 标题 提示内容 按键类型 默认关联回车按键
        //1.错误对话框(框名为critical,内容为叉图标和错误文字)
        //QMessageBox::critical(this,"critical","错误");

        //2.信息对话框
        //QMessageBox::information(this,"info","信息");

        //3.提问对话框
        //QMessageBox::question(this,"ques","提问");//(默认显示Yes和No按钮)
        //显示Save和Cancel按钮,设置默认回车按键为Cancel
        //返回值 也是StandardButton类型,利用返回值判断用户的输入
        if(QMessageBox::Save ==QMessageBox::question(this,"ques","提问",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel))
        {
            qDebug()<<"选择的是保存";
        }
        else
        {
            qDebug()<<"选择的是取消";
        }

        //4.警告对话框
//        QMessageBox::warning(this,"warning","警告");
    });
}

3.其他


#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDialog>
#include<QDebug>
#include<QMessageBox>
#include<QColorDialog>
#include<QFileDialog>
#include<QFontDialog>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //点击新建按钮,弹出一个对话框
    connect(ui->actionnew,&QAction::triggered,[=](){
        //其他对话框
        //1.颜色对话框 QColor(r,g,b,透明度)
        //返回值为颜色数值
//        QColor col= QColorDialog::getColor(QColor(135,209,255));
//        qDebug()<<"r="<<col.red()<<",g="<<col.green()<<",b"<<col.blue();

        //2.文件对话框 参数:父亲 标题 默认打开路径 过滤文件格式
        //点击新建,自动打开桌面显示过滤后的txt和文件夹
        //返回值为 选取的路径
//        QString str= QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\佳\\Desktop","(*.txt)");
//        qDebug()<<str;

        //3.字体对话框
        bool f;
        QFont font=QFontDialog::getFont(&f,QFont("宋体",36));
        qDebug()<<"字体:"<<font.family().toUtf8().data()<<",字号:"<<font.pointSize()<<",是否加粗:"<<font.bold()<<",是否倾斜:"<<font.italic();
    });
}


//QInputDialog        :允许用户输入一个值,并将其值返回
//QMessageBox         :模态对话框
//QPageSetupDialog    :为打印机提供纸张相关的选项
//QPrintDialog        :打印机配置
//QPrintPreviewDialog :打印预览
//QProgressDialog     :显示操作过程

七、ui界面

1.按钮组

(1)QPushButton : 常用按钮
(2)QToolButton: 工具按钮可,用于显示图片
(3)radioButton: 单选按钮
(4)checkbox: 多选按钮,可监听状态
1.界面图:
QT学习笔记(持续更新)
2.有关代码:

#include "widget.h"
#include "ui_widget.h"
#include<QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //1.设置单选按钮,默认男
    //自定义按钮名:rBtnMan
    ui->rBtnMan->setChecked(true);
    //选中"女"后,打印信息
    connect(ui->rBtnWoman,&QRadioButton::clicked,[=](){
        qDebug()<<"性别:女";
    });

    //2.多选按钮
    //自定义按钮名:cBa
    //输出:2(选中) 0(未选中)
    //1:半选(需要在属性的tristate打勾)
    connect(ui->cBa,&QCheckBox::stateChanged,[=](int state){
        qDebug()<<state;
    });
}
Widget::~Widget()
{
    delete ui;
}

八、控件

1.QListWidget控件

(1)效果图:
QT学习笔记(持续更新)
(2)代码:

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //利用listWidget写诗
    //法1:
    QListWidgetItem *item=new QListWidgetItem("长风破浪会有时");
    //将一行诗放入到listWidget控件中
    ui->listWidget->addItem(item);
    item->setTextAlignment(Qt::AlignHCenter);//设置水平居中

    //法2:(缺点:无法设置居中)
    //QStringList QList<QString>
    QStringList list;
    list<<"长风破浪会有时"<<"直挂云帆济沧海";
    ui->listWidget->addItems(list);
}

2.QTreeWidget树控件

(1)效果图:
QT学习笔记(持续更新)
(2)代码:

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

    //treeWidget树控件使用
    //1.设置水平头
    ui->treeWidget->setHeaderLabels(QStringList()<<"诗人"<<"诗人介绍");
    //2.创建根节点
    QTreeWidgetItem *titem =new QTreeWidgetItem(QStringList()<<"唐");
    QTreeWidgetItem *djitem =new QTreeWidgetItem(QStringList()<<"东晋");
    QTreeWidgetItem *sitem =new QTreeWidgetItem(QStringList()<<"宋");
    //3.加载顶层的节点(添加根节点到树控件上)
    ui->treeWidget->addTopLevelItem(titem);
    ui->treeWidget->addTopLevelItem(djitem);
    ui->treeWidget->addTopLevelItem(sitem);
    //4.追加子节点
    QStringList poet1;
    poet1<<"李白"<<"字太白,号青莲居士,诗仙";
    QTreeWidgetItem *l1=new QTreeWidgetItem(poet1);
    titem->addChild(l1);
}

3.QTableWidget控件

(1)效果图:
QT学习笔记(持续更新)(2)代码:

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

    //设置列数
    ui->tableWidget->setColumnCount(3);
    //设置水平表头
    ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");
    //设置行数
    ui->tableWidget->setRowCount(5);

    //设置正文
    //1.设置某个单元格
    //ui->tableWidget->setItem(0,0, new QTableWidgetItem("李白"));

    //2.整体设置
    QStringList nameList;
    nameList<<"李白"<<"杜甫"<<"陶渊明"<<"李贺"<<"李清照";
    QList<QString> sexList;//等于QStringList
    sexList<<"男"<<"男"<<"男"<<"男"<<"女";

    for(int i=0;i<5;i++)
    {
        int col=0;
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(nameList[i]));//1
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexList.at(i)));//2(1和2可互用)
        //int转QString:QString::number(18)
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(18)));
    }
}

4.其他

(1)栈控件效果图:
QT学习笔记(持续更新)
(2)代码:


#include "widget.h"
#include "ui_widget.h"
#include<QMovie>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //1.栈控件使用
    //设置默认定位scrollArea
    ui->stackedWidget->setCurrentIndex(0);
    //scrollArea按钮
    connect(ui->btn_scroll,&QPushButton::clicked,[=](){
        //CurrentIndex可在ui设计界面查看
        ui->stackedWidget->setCurrentIndex(0);
    });
    //toolBox按钮
    connect(ui->btn_tool,&QPushButton::clicked,[=](){
        ui->stackedWidget->setCurrentIndex(2);
    });
    //TabWidget按钮
    connect(ui->btn_tab,&QPushButton::clicked,[=](){
        ui->stackedWidget->setCurrentIndex(1);
    });

    //2/下拉框
    ui->comboBox->addItem("滑板");
    ui->comboBox->addItem("自行车");
    ui->comboBox->addItem("小电驴");
    //点击按钮 选择自行车选项
    connect(ui->btn_select,&QPushButton::clicked,[=](){
        //法1:
        //ui->comboBox->setCurrentIndex(1);
        //法2:
        ui->comboBox->setCurrentText("自行车");
    });

//    //利用Qlable显示图片
//    ui->lbl_Image->setPixmap(QPixmap(":/Image/a.png"));
//    //利用Qlabel显示gif动态图片
//    QMovie *movie =new QMovie(":/XX.gif");
//    ui->lbl_movie->setMovie(movie);
//    movie->start();//播放
}

内容来自:b站最新QT从入门到实战完整版|传智教育。
如有错误,欢迎指出。文章来源地址https://www.toymoban.com/news/detail-425593.html

到了这里,关于QT学习笔记(持续更新)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Rust 学习笔记(持续更新中…)

    运行 Rust 程序之前必须先编译,命令为: rustc 源文件名  - rustc main.rs 编译成功之后,会生成一个二进制文件 - 在 Windows 上还会生产一个 .pdb 文件  ,里面包含调试信息 Rust 是 ahead-of-time 编译的语言 - 可以先编译程序,然后把可执行文件交给别人运行(无需安装 Rust ) rustc

    2024年02月10日
    浏览(83)
  • Mybatis学习笔记(一)(持续更新中)

    为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。 (博客的参考源码以可以在我主页的资源里找到,如果在学习

    2024年02月04日
    浏览(38)
  • 初学Verilog语言基础笔记整理(实例点灯代码分析)持续更新~

    实例:点灯学习 刚接触 Verilog ,作为一个硬件小白,只能尝试着去理解,文章未完…持续更新。 参考博客文章: Verilog语言入门学习(1) Verilog语法 【 Verilog 】一文带你了解 Verilog 基础语法 - 子墨祭的文章 - 知乎 关于Verilog中的几种赋值语句 这里抄点,那里扣点,整理了一

    2024年02月07日
    浏览(43)
  • 动态规划例题(代码随想录学习)——持续更新

    dp[i][j]的含义是:从(0,0)到(i,j)的不同路径 当路线中有了障碍,此路不通,所以在不同路径的递推公式上需要增加条件 if(obs[i,j]==0)没有障碍,dp[i][j]= dp[i-1][j]+dp[i][j-1] if(obs[i][j]==1)有障碍,不进行推导 obs数组表示障碍 障碍的后面应该是0(原因:遇到障碍后,即

    2024年04月12日
    浏览(43)
  • 【笔记】Spring Boot 历史官方文档学习(持续更新)

    Spring Boot 2014正式发布1.0版本,距今已经快10年了。看历史官方文档了解重点feature, 帮助自己建立知识网络。 与 Spring 5 官网历史文档学习 一样,尽量保证不误解文档作者的原意,不好翻译的会有原文摘录(包括一些专有名词),并辅以自己的理解。限于篇幅原因,只摘录工作

    2024年02月10日
    浏览(43)
  • DotNet VOL.Core框架学习使用笔记(持续更新)

     2023-6-8 下拉框绑定数据源的增加设置在 系统设置-下拉框绑定设置里面,重点是根据需要用sql查出数据源。 2023-6-12 从控制器外层的sys_regionController部分类调试来看 _isys_RegionRepository 注入了总是提示为空。 后来了解到了框架约束好像所有的业务都要写到partial文件夹的部分类里

    2024年02月10日
    浏览(39)
  • 江科大STM32学习笔记(详细版)——2023持续更新

    基础篇 是到时候我自己找其它视频补充(就比如寄存器影射,时钟树),到时候写在其它文章里。 主篇(外设篇)目前是跟着@江协科技的STM32入门教程-2023版 细致讲解 中文字幕视频来学习的,大家可以边看视频边根据我的笔记做适合自己的笔记; 另外,因为篇幅太长了,我将

    2024年02月06日
    浏览(44)
  • 【STM32】江科大STM32学习笔记汇总(持续更新中...)

    【STM32】STM32学习笔记-课程简介(01) 【STM32】STM32学习笔记-STM32简介(02) 【STM32】STM32学习笔记-软件安装(03) 【STM32】STM32学习笔记-新建工程(04) 【STM32】STM32学习笔记-GPIO输出(05) 【STM32】STM32学习笔记-GPIO相关API概述(06-1) 【STM32】STM32学习笔记-LED闪烁 LED流水灯 蜂鸣器(06-2) 【STM32】

    2024年02月22日
    浏览(42)
  • 【教程】MySQL数据库学习笔记(三)——数据定义语言DDL(持续更新)

    写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 第一章 《认识与环境搭建》 第二章 《数据类型》 第三章 《数据定义语言DDL》 DDL(Data Definition Language,数据定义语言) 是用于定义和管理数据库对象(如表、视图、索引等

    2024年02月20日
    浏览(43)
  • OpenHarmony鸿蒙原生应用开发,ArkTS、ArkUI学习踩坑学习笔记,持续更新中。

    结论:在BIOS里面将Hyper-V打开,DevEco Studio模拟器可以成功启动。 如果在另外的文件中引用组件,需要使用export导出,并在使用的页面import该自定义组件。 1.自定义组件(被导入组件) 2.组合组件(引用自定义组件) 1、main_pages.json配置文件配置静态路由地址,配置文件

    2024年02月04日
    浏览(75)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包