QT QTreeView\QTreeWidget控件 使用详解

news2024/9/27 17:30:58

         本文详细的介绍了QTreeView、QTreeWidget控件的各种操作,例如:新建界面、QTreeWidget、QTreeView、控件布局、设置列、设置宽高、设置列表头、设置复选框、设置图标、添加树、删除树、查找树、修改树、设置选中、树排序、事件、信号、槽函数、添加节点、默认选中、.h源文件、cpp源文件、其它文章等等操作。

        实际开发中,一个界面上可能包含十几个控件,手动调整它们的位置既费时又费力。布局管理器可以完成两件事:自动调整控件的位置,包括控件之间的间距、对齐等;当用户调整窗口大小时,位于布局管理器内的控件也会随之调整大小,从而保持整个界面的美观。

        本系列QT全面详解文章目前共有二十八篇高质量内容,本系列文章较为详细的讲述了QT控件的基础操作和使用,也谢谢大家的关注、点赞、收藏。

 本文作者原创,转载请附上文章出处与本文链接。

QT QTreeView\QTreeWidget控件 使用详解目录

1 新建界面

2  QTreeWidget

2.1 控件布局

2.2 设置列

2.3 设置宽高

2.4 设置列表头

2.5 设置复选框

2.6 添加树

2.6.1 添加顶层项目

2.6.2 插入顶层项目

2.6.3 添加子项

2.7 删除树

2.7.1 删除子项目

2.7.2 删除顶级条目

2.8 查询树

2.8.1 查询对应条目

2.8.2 查询对应序号

2.9 树条目操作

2.9.1 当前选中行列

2.9.2 设置条目选中

2.9.3 设置选中行

2.9.4 设置选中列

2.9.5 当前选中行 上一个选中行

2.10 树排序

2.10.1 设置自动排序

2.10.2 升序降序

2.11 树查找

2.12 清空树

2.13 折叠树

2.14 展开树

2.15 滚动指定条目

2.16 树单击信号

2.17 树双击信号

2.18 树展开信号

2.19 树折叠信号

2.20 列数据变化信号

3 QTreeView

3.1 控件布局

3.2 添加节点

3.3 设置图标

3.4 设置checkBox

3.5 默认选中

3.6 单击信号

3.7 双击信号


1 新建界面

2  QTreeWidget

2.1 控件布局

    QStringList topTitle;

    QTreeWidgetItem* treeWidgetItem_1;
    QTreeWidgetItem* treeWidgetItem_2;
    QTreeWidgetItem* treeWidgetItem_3;

    QTreeWidgetItem* treeItem_1;
    QTreeWidgetItem* treeItem_2;
    QTreeWidgetItem* treeItem_3;

    QStringList sTreeList_1,sTreeList_2,sTreeList_3;
    QStringList sTreeItemList_1,sTreeItemList_2,sTreeItemList_3;


    //创建项目
    treeWidgetItem_1 = new QTreeWidgetItem(sTreeList_1);
    treeWidgetItem_2 = new QTreeWidgetItem(sTreeList_2);
    treeWidgetItem_3 = new QTreeWidgetItem(sTreeList_3);

    treeItem_1=new QTreeWidgetItem(sTreeItemList_1);
    treeItem_2=new QTreeWidgetItem(sTreeItemList_2);
    treeItem_3=new QTreeWidgetItem(sTreeItemList_3);
    
    sTreeList_1 << "顶级条目0-第1列" << "顶级条目0-第2列" << "顶级条目0-第3列" << "顶级条目0-第4列" << "顶级条目0-第5列";
    sTreeList_2 << "顶级条目1-第1列" << "顶级条目1-第2列" << "顶级条目1-第3列" << "顶级条目1-第4列" << "顶级条目1-第5列";
    sTreeList_3 << "顶级条目2-第1列" << "顶级条目2-第2列" << "顶级条目2-第3列" << "顶级条目2-第4列" << "顶级条目2-第5列";

    sTreeItemList_1 << "子条目0-第1列" << "子条目0-第2列" << "子条目0-第3列" << "子条目0-第4列" << "子条目0-第5列";
    sTreeItemList_3 << "子条目1-第1列" << "子条目1-第2列" << "子条目1-第3列" << "子条目1-第4列" << "子条目1-第5列";
    sTreeItemList_2 << "子条目2-第1列" << "子条目2-第2列" << "子条目2-第3列" << "子条目2-第4列" << "子条目2-第5列";

2.2 设置列

    //设置列数
    ui->treeWidget->setColumnCount(3);

    //获取列
    ui->treeWidget->columnCount();

2.3 设置宽高

    //设置宽高
    //ui->treeWidget->resize(600,300);

2.4 设置列表头

topTitle << "0" << "1" << "2" << "3" << "4";
ui->treeWidget->setHeaderLabels(topTitle);

2.5 设置复选框

    //设置复选框     参数1 复选框的位置 列序号    Qt::Unchecked   没选中 Qt::Checked    选中   Qt::PartiallyChecked   部分选中
    treeWidgetItem_2->setCheckState(0,Qt::PartiallyChecked);

2.6 添加树

2.6.1 添加顶层项目

    //添加一个顶层项目
    ui->treeWidget->addTopLevelItem(treeWidgetItem_1);
    ui->treeWidget->addTopLevelItem(treeWidgetItem_2);

2.6.2 插入顶层项目

    //插入顶层项目
    ui->treeWidget->insertTopLevelItem(0,treeWidgetItem_3);

2.6.3 添加子项

    //给项目添加子项
    treeWidgetItem_1->addChild(treeItem_1);
    treeWidgetItem_1->addChild(treeItem_2);
    treeWidgetItem_1->addChild(treeItem_3);

2.6.4 其它添加函数

        例如 获取顶层项目总数

qDebug() << "顶层总数:" << ui->treeWidget->topLevelItemCount();

    //    树形控件顶级条目的操作比较类似 QListWidget 的列表条目操作函数。新建条目之后,可以用如下函数把条目添加到树形控件的顶级条目列表末尾:
    //    void QTreeWidget::​addTopLevelItem(QTreeWidgetItem * item) //添加一个顶级条目到末尾
    //    void QTreeWidget::​addTopLevelItems(const QList<QTreeWidgetItem *> & items) //添加多个顶级条目到末尾
    //    如果希望将条目插入到指定顶级条目列表的 index 序号位置,使用如下函数:
    //    void QTreeWidget::​insertTopLevelItem(int index, QTreeWidgetItem * item)
    //    void QTreeWidget::​insertTopLevelItems(int index, const QList<QTreeWidgetItem *> & items)
    //    树形控件所有的顶级条目父节点指针都为 NULL (父节点是指树形层次中的节点关系,而条目的父控件依然是树形控件本身)。
    //    添加了顶级条目之后,可以对顶级条目进行计数:
    //    int QTreeWidget::​topLevelItemCount() const

2.7 删除树

2.7.1 删除子项目

    //删除子项目
    //treeWidgetItem_1->takeChild(2);

2.7.2 删除顶级条目

    //删除顶级条目
    //ui->treeWidget->takeTopLevelItem(2);

2.8 查询树

2.8.1 查询对应条目

    //查询控件对应条目
    qDebug() << ui->treeWidget->topLevelItem(1);

2.8.2 查询对应序号

    //查询控件顶级序号
    qDebug() << ui->treeWidget->indexOfTopLevelItem(treeWidgetItem_1);
    qDebug() << ui->treeWidget->indexOfTopLevelItem(treeWidgetItem_2);
    qDebug() << ui->treeWidget->indexOfTopLevelItem(treeWidgetItem_3);

2.9 树条目操作

2.9.1 当前选中行列

    qDebug() << "当前选中行: " << ui->treeWidget->currentItem();
    qDebug() << "当前选中列: " << ui->treeWidget->currentColumn();

2.9.2 设置条目选中

//    void QTreeWidget::​setCurrentItem(QTreeWidgetItem * item)
//    void QTreeWidget::​setCurrentItem(QTreeWidgetItem * item, int column)

2.9.3 设置选中行

    //设置选中行
    //ui->treeWidget->setCurrentItem(treeWidgetItem_1);

2.9.4 设置选中列

    //设置选中某行某列
    ui->treeWidget->setCurrentItem(treeWidgetItem_1,2);

2.9.5 当前选中行 上一个选中行

    //当前选中行 上一个选中行
    //ui->treeWidget->currentItemChanged(treeWidgetItem_1, treeWidgetItem_2);

2.10 树排序

2.10.1 设置自动排序

    //ui->treeWidget->isSortingEnabled();
    //ui->treeWidget->setSortingEnabled(true);

2.10.2 升序降序

    //ui->treeWidget->sortByColumn(1, Qt::SortOrder::AscendingOrder);       //升序
    //ui->treeWidget->sortByColumn(1, Qt::SortOrder::DescendingOrder);      //降序

2.11 树查找

    QString text = "顶级条目2-第2列";
    Qt::MatchFlags flags;
    //ui->treeWidget->findItems(text, flags, 0);
    bool isEmpty = ui->treeWidget->findItems(text,Qt::MatchExactly).isEmpty();
    qDebug() << "查找: " << isEmpty;

2.12 清空树

//清空控件
void MainWindow::on_pushButton_2_clicked()
{
    ui->treeWidget->clear();
}

2.13 折叠树

//折叠控件
void MainWindow::on_pushButton_3_clicked()
{
    ui->treeWidget->collapseItem(treeWidgetItem_1);
}

2.14 展开树

//展开控件
void MainWindow::on_pushButton_4_clicked()
{
    ui->treeWidget->expandItem(treeWidgetItem_1);
}

2.15 滚动指定条目

//滚动到指定条目
void MainWindow::on_pushButton_5_clicked()
{
    //void scrollToItem(const QTreeWidgetItem * item, QAbstractItemView::ScrollHint hint = EnsureVisible)
}

2.16 树单击信号

void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column)
{
    qDebug() << "单击信号: " << item << "column: " << column;
}

2.17 树双击信号

void MainWindow::on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column)
{
    qDebug() << "双击信号: " << item << "column: " << column;
}

2.18 树展开信号

void MainWindow::on_treeWidget_itemExpanded(QTreeWidgetItem *item)
{
    qDebug() << "展开控件:" << item;
}

2.19 树折叠信号

void MainWindow::on_treeWidget_itemCollapsed(QTreeWidgetItem *item)
{
    qDebug() << "折叠信号: " << item;
}

2.20 列数据变化信号

void MainWindow::on_treeWidget_itemChanged(QTreeWidgetItem *item, int column)
{
    qDebug() << "列数据变化: " << item;
}

3 QTreeView

3.1 控件布局

    QStandardItemModel *standardModel;
    QStandardItem *standardItem;

    //设置表头
    standardModel = new QStandardItemModel(this);
    //设置表头隐藏
    //ui->treeView->setHeaderHidden(true);
    //设置表头
    standardModel->setHorizontalHeaderLabels(QStringList()<<"0"<<"1"<<"2");
    //设置model
    ui->treeView->setModel(standardModel);
    //设置展开
    ui->treeView->expandAll();

3.2 添加节点

    //添加节点
    standardItem = new QStandardItem("顶级条目-0");

        standardModel->setItem(0,0,standardItem);
        QStandardItem *item00 = new QStandardItem("子条目0");
        QStandardItem *item10 = new QStandardItem("子条目1");
        QStandardItem *item20 = new QStandardItem("子条目2");

        QStandardItem *item01 = new QStandardItem("0-0");
        QStandardItem *item11 = new QStandardItem("0-1");
        QStandardItem *item21 = new QStandardItem("0-2");

        QStandardItem *item02 = new QStandardItem("0-0-0");
        QStandardItem *item12 = new QStandardItem("0-1-1");
        QStandardItem *item22 = new QStandardItem("0-2-2");

        standardModel->item(0,0)->setChild(0,0,item00);
        standardModel->item(0,0)->setChild(1,0,item10);
        standardModel->item(0,0)->setChild(2,0,item20);
        standardModel->item(0,0)->setChild(0,1,item01);
        standardModel->item(0,0)->setChild(1,1,item11);
        standardModel->item(0,0)->setChild(2,1,item21);
        standardModel->item(0,0)->setChild(0,2,item02);
        standardModel->item(0,0)->setChild(1,2,item12);
        standardModel->item(0,0)->setChild(2,2,item22);


        QStandardItem *item2 = new QStandardItem(QIcon("D:/c.png"),"顶级条目-1");
        standardModel->setItem(1,0,item2);

        QStandardItem *item200 = new QStandardItem("子条目0");
        QStandardItem *item210 = new QStandardItem("子条目1");
        QStandardItem *item220 = new QStandardItem("子条目2");

        QStandardItem *item201 = new QStandardItem("1-0");
        QStandardItem *item211 = new QStandardItem("1-1");
        QStandardItem *item221 = new QStandardItem("1-2");

        QStandardItem *item202 = new QStandardItem("1-0-0");
        QStandardItem *item212 = new QStandardItem("1-1-1");
        QStandardItem *item222 = new QStandardItem("1-2-2");

        standardModel->item(1,0)->setChild(0,0,item200);
        standardModel->item(1,0)->setChild(1,0,item210);
        standardModel->item(1,0)->setChild(2,0,item220);
        standardModel->item(1,0)->setChild(0,1,item201);
        standardModel->item(1,0)->setChild(1,1,item211);
        standardModel->item(1,0)->setChild(2,1,item221);
        standardModel->item(1,0)->setChild(0,2,item202);
        standardModel->item(1,0)->setChild(1,2,item212);
        standardModel->item(1,0)->setChild(2,2,item222);

3.3 设置图标

QStandardItem *item2 = new QStandardItem(QIcon("D:/c.png"),"顶级条目-1");

3.4 设置checkBox

        //设置节点带checkBox
        standardModel->item(0,0)->setCheckable(true);
        standardModel->item(0,0)->setCheckState(Qt::Checked);

3.5 默认选中

        //设置默认选中第几行
        QModelIndex index = standardModel->item(1,0)->index();
        ui->treeView->setCurrentIndex(index);

3.6 单击信号

void MainWindow::on_treeView_clicked(const QModelIndex &index)
{
    qDebug() << "单击信号 index: " << index;
}

3.7 双击信号

void MainWindow::on_treeView_doubleClicked(const QModelIndex &index)
{
    qDebug() << "双击信号 index: " << index;
}

4 其它文章

QT TextEdit控件_双子座断点的博客-CSDN博客_qt textedit

QT QComboBox使用详解_双子座断点的博客-CSDN博客

QT QtableView操作详解_双子座断点的博客-CSDN博客_qtableview增删改查

Qt QStandardItemModel(1.超级详细用法)_双子座断点的博客-CSDN博客_qstandardmodel

Qt QStandardItemModel(2.超级详细函数)_双子座断点的博客-CSDN博客_qstandarditemmodel点击事件

QT QRadioButton使用详解_双子座断点的博客-CSDN博客_qt radiobutton

QT QLineEdit使用详解_双子座断点的博客-CSDN博客_qt qlineedit

Qt QMessageBox使用详解_双子座断点的博客-CSDN博客_qt message

QChart折线图、饼状图、条形图、曲线图_双子座断点的博客-CSDN博客_qchart样式

QChart属性详解_双子座断点的博客-CSDN博客_setanimationoptions

QCharts QValueAxis使用_双子座断点的博客-CSDN博客_qvalueaxis

Qt 5 等待提示框(开源 动态图)_双子座断点的博客-CSDN博客_qt 等待对话框

QtDataVisualization 数据3D可视化_双子座断点的博客-CSDN博客_qtdatavisualizatio

QT QSpinBox 整数计数器控件 使用详解_双子座断点的博客-CSDN博客
QT QDoubleSpinBox 浮点计数器控件(使用详解)_双子座断点的博客-CSDN博客_qdoublespinbox信号槽
QT QSlider、QHorizontalSlider、QVerticalSlider 控件 使用详解_双子座断点的博客-CSDN博客_qslider设置步长

QT QTabWidget 控件 使用详解_双子座断点的博客-CSDN博客

QT QCalendarWidget控件 使用详解_双子座断点的博客-CSDN博客

QT QStackedWidget 控件 使用详解_双子座断点的博客-CSDN博客

QT QVBoxLayout 垂直布局控件_双子座断点的博客-CSDN博客

QT QHBoxLayout 水平布局控件_双子座断点的博客-CSDN博客
QT QGridLayout网格布局控件_双子座断点的博客-CSDN博客

QT QVerticalSpacer 弹簧控件_双子座断点的博客-CSDN博客
QT QHorizontalSpacer弹簧控件_双子座断点的博客-CSDN博客

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

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

相关文章

【玩转Docker小鲸鱼叭】MacOS系统安装Docker

安装Docker Mac 系统安装 Docker 其实很简单&#xff0c;我们在官方文档下载安装一下就可以了&#xff0c;但是需要注意 Docker 官方建议 MacOS 必须是版本 11 或更高版本&#xff0c;如果版本较低&#xff0c;建议先升级 MacOS 版本。 可以通过左上角的小  图片查看系统版…

浅析Spring-kafka源码——消费者模型的实现

SpringBoot项目中的消费端实现而言,Spring-kafka没有用原生的ConsumerConnector,,而是借助原生client的拉取消息功能做了自己的消费模型的实现,提供了@KafkaListener注解这种方式实现消费。 开发中在使用Spring-kafka时,一般也都是通过使用@KafkaListener注解的方法来实现…

Android MPAndroidChart折线图渐变填充实现

效果如下&#xff1a; 以下是一个从上到下渐变的drawable&#xff0c;上面是蓝色&#xff0c;逐步向下变成白色&#xff1a; chart_bg.xml <?xml version"1.0" encoding"utf-8"?> <shape xmlns:android"http://schemas.android.com/apk…

静态链接和动态链接 -- 静态加载(隐式调用)和动态加载(显式调用)

区别 静态链接和动态链接 静态链接 : 由链接器在链接时将库的内容加入到可执行程序中&#xff0c;这里的库是静态库&#xff0c;Windows下是*.lib后缀&#xff0c;Linux下是*.a后缀。动态链接 : 可执行程序加载时(静态加载) 或者 运行时(动态加载)&#xff0c;将库文件中的内容…

OpenShift Virtualization - 通过外部固定 IP 访问 VM 中的服务(附视频)

《OpenShift / RHEL / DevSecOps 汇总目录》 说明&#xff1a;本文已经在 OpenShift 4.12 的环境中验证 文章目录 方法1&#xff1a;通过 Service 的 NodePort 访问 VM方法2&#xff1a;通过外部 IP 访问 VM确认 OpenShift 集群环境为 Worker 节点添加 Linux Bridge创建使用 Li…

『DevOps最佳实践』使用Jenkins和Harbor进行持续集成和交付的解决方案

&#x1f4e3;读完这篇文章里你能收获到 全文采用图文形式讲解学会使用Harbor配置项目学会在Jenkins中配置Harbor推送权限使用Jenkins和Harbor进行持续集成的实践感谢点赞收藏&#xff0c;避免下次找不到~ 文章目录 一、准备工作1. 环境准备2. 修改Docker配置文件3. Docker登陆…

2023蓝桥杯大学A组C++国赛游记+个人题解

Day0 发烧了一晚上没睡着&#xff0c;感觉鼻子被打火机烧烤一样难受&#xff0c;心情烦躁 早上6点起来吃了个早饭&#xff0c;思考能力完全丧失了&#xff0c;开始看此花亭奇谭 看了六集&#xff0c;准备复习数据结构考试&#xff0c;然后秒睡 一睁眼就是下午2点了 挂了个…

04- c语言数组 (C语言)

一 数组的概念 1、在程序设计中&#xff0c;为了方便处理数据把具有相同类型的若干变量按有序形式组织起来,这些按序排列的 同类数据元素的集合 称为 数组。 2、在C语言中&#xff0c;数组属于构造数据类型。一个数组可以分解为多个数组元素&#xff0c;这些数组元素可以是基本…

力扣动态规划专题(三)完全背包 518.零钱兑换II 377. 组合总和 Ⅳ 70. 爬楼梯 322. 零钱兑换 279.完全平方数 步骤及C++实现

文章目录 完全背包一维dp数组 滚动数组 518.零钱兑换II377. 组合总和 Ⅳ70. 爬楼梯322. 零钱兑换279.完全平方数139.单词拆分 完全背包 完全背包的物品数量是无限的&#xff0c;01背包的物品数量只有一个 完全背包和01背包分许步骤一样&#xff0c;唯一不同就是体现在遍历顺序上…

deque的介绍

前言 为什么会存在deque呢&#xff1f;在c标准库中deque是作为 stack和queue的底层容器就是deque&#xff0c;我们要是了解过list和vector就会知道这两种容器各有优劣&#xff0c;vector的优点是支持随机访问&#xff0c;进而可以支持排序和二分查找等算法&#xff0c;它的缺点…

鼠标事件 获取鼠标坐标及点击事件

运行效果&#xff1a; 头文件 #ifndef MOUSEEVENT_H #define MOUSEEVENT_H #include #include #include #include class MouseEvent : public QMainWindow { Q_OBJECT public: MouseEvent(QWidget *parent 0); ~MouseEvent(); protected: void mousePressEvent(QMouse…

Linux:一键搭建ftp服务(vsftpd)

《TRO-23614-VSFTPD》 如果csdn收费 可以和我si liao 我会免费发给你 我发的这个是一个tar归档包&#xff0c;脚本就在其中 Linux&#xff1a;《tar》归档命令_鲍海超-GNUBHCkalitarro的博客-CSDN博客 tar xfz tarro_vsftpd.tar.gz -C /root/ # tar xfz tar包路径 -…

SpringBoot第27讲:SpringBoot集成MySQL - MyBatis 多个数据源

SpringBoot第27讲&#xff1a;SpringBoot集成MySQL - MyBatis 多个数据源 本文是SpringBoot第27讲&#xff0c;在某些场景下&#xff0c;Springboot需要使用多个数据源&#xff0c;以及某些场景会需要多个数据源的动态切换。本文主要介绍上述场景及 SpringBootMyBatis实现多个数…

【期末满分作业】C语言程序设计 实训1——奖学金评定系统的设计与实现(附带实验报告、源码以及解释)

大家好&#xff0c;各位努力奋斗的大学生小伙伴们&#xff01;今天&#xff0c;我将带你们领略一项令人惊叹的程序设计奇迹——《奖学金评定系统》&#xff01;是不是感到激动呢&#xff1f;别急&#xff0c;让我为你们揭开这个能让你在C语言程序设计中拿满分的秘密武器&#x…

ASP.NET Core MVC 从入门到精通之Identity入门

随着技术的发展&#xff0c;ASP.NET Core MVC也推出了好长时间&#xff0c;经过不断的版本更新迭代&#xff0c;已经越来越完善&#xff0c;本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容&#xff0c;适用于初学者&#xff0c;在校毕业生&#xff0c…

pikache靶场通关——XSS漏洞

文章目录 前言环境第一关、反射型xss(get)Step.1、输入特殊字符测试Step.2、输入js语句Step.3、在URL中输入js语句 第二关、反射性xss(post)Step.1、输入获取cookie的js语句 第三关、存储型xssStep.1、输入获取cookie的js语句Step.2、查看页面源码Step.3、感受危害性 第四关、D…

1 君正IPC芯片方案介绍

专栏特色 1、所有源码严格遵守统一的编码规范。 2、手把手教学&#xff0c;让你从零开始&#xff0c;深入了解君正方案IPC库的方方面面。 3、纯C接口&#xff0c;接口封装严谨&#xff0c;接口功能丰富&#xff0c;应用层调用简单便捷。 4、近二十年行业经验和技术积累打造的高…

风电光伏iEEE33节点蒙特卡洛概率潮流计算

基于蒙特卡洛法的概率潮流 以IEEE33节点的电网为研究对象 建立了光伏和风电的概率出力模型 采用蒙特卡洛法进行随机抽样 之后基于抽样序列进行概率潮流计算 最后得到电网的电压概率出力曲线

使用数字钥匙技术的车辆有多安全?

首发微信公众号网络研究院&#xff0c;关注获取更多。 虽然有几种不同的方法来实现汽车使用的数字钥匙&#xff0c;但安全的数字钥匙标准应该利用近场通信 (NFC) 和超宽带 (UWB) 结合蓝牙低功耗 (BLE) 来访问车辆&#xff0c;开始引擎&#xff0c;固定车辆&#xff0c;或授权各…

云原生之使用Docker部署Dashy个人导航页

云原生之使用Docker部署Dashy个人导航页 一、Dashy介绍1.1 Dashy简介1.2 Dashy特点 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、部署前准备工作4.1下载Dashy源码包4.2 查看D…