Qt学习-22 <QTreeWidget QTreeView>

—均为学习笔记,如有错误请指出


一、QTreeWidget

1. 样式展示:

① 

② 

2. 样式代码:

① 

//treeWidget树控件的使用
    //设置水平头
    //QStringList() 创建匿名对象,省略起名的操作
    ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介绍");
 
 
    //创建根节点
    QTreeWidgetItem * liitem = new  QTreeWidgetItem(QStringList()<<"力量");
    QTreeWidgetItem * minitem = new  QTreeWidgetItem(QStringList()<<"敏捷");
    QTreeWidgetItem * zhiitem = new  QTreeWidgetItem(QStringList()<<"智力");
 
 
    //加载顶层的节点(根节点)
    ui->treeWidget->addTopLevelItem(liitem);
    ui->treeWidget->addTopLevelItem(minitem);
    ui->treeWidget->addTopLevelItem(zhiitem);
 
 
    //追加子节点
    //力量
    QStringList heroL1;
    heroL1<<  "刚被猪e"  <<  "前排坦克,能在吸收伤害的同时造成可观的范围输出e" ;
    QTreeWidgetItem * l1 = new  QTreeWidgetItem(heroL1);
    liitem->addChild(l1);
    QStringList heroL2 ;
    heroL2<<  "船长e"  <<  "前排坦克,能肉能输出能控场的全能英雄e" ;
    QTreeWidgetItem * l2 = new  QTreeWidgetItem(heroL2);
    liitem->addChild(l2);
    //敏捷
    QStringList heroM1 ;
    heroM1<<  "月骑e"  <<  "中排物理输出,可以使用分裂利刃攻击多个目标e" ;
    QTreeWidgetItem * m1 = new  QTreeWidgetItem(heroM1);
    minitem->addChild(m1);
    QStringList heroM2;
    heroM2 <<  "小鱼人e"  <<  "前排战士,擅长偷取敌人的属性来增强自身战力e" ;
    QTreeWidgetItem * m2 = new  QTreeWidgetItem(heroM2);
    minitem->addChild(m2);
    //智力
    QStringList heroZ1;
    heroZ1 <<  "死灵法师e"  <<  "前排法师坦克,魔法抗性较高,拥有治疗技能e" ;
    QTreeWidgetItem * z1 = new  QTreeWidgetItem(heroZ1);
    zhiitem->addChild(z1);
    QStringList heroZ2;
    heroZ2 <<  "巫医e"  <<  "后排辅助法师,可以使用奇特的巫术诅咒敌人与治疗队友e" ;
    QTreeWidgetItem * z2 = new  QTreeWidgetItem(heroZ2);
    zhiitem->addChild(z2);

    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列";
3. 用法介绍(结果参照样式②)

参考文章

1). 设置列
//设置
ui->treeWidget->setColumnCount(int number);
 //获取
ui->treeWidget->columnCount();
2). 设置宽高
//设置宽高
ui->treeWidget->resize(x,y);
3).设置列表头
topTitle << "title0" << "title1" << "title2" << "title3" << "title4";
ui->treeWidget->setHeaderLabels(topTitle);
4). 设置复选框
//设置复选框     
  treeWidgetItem_2->setCheckState(int index,Qt::PartiallyChecked);

//参数一: 复选框的位置  列序号  
//参数二: 枚举值:
Qt::Unchecked  // 没选中;
Qt::Checked  // 选中;
Qt::PartiallyChecked  // 部分选中
5). 添加树
①. 添加顶层项目
//添加顶层项目
ui->treeWidget->addTopLevelItem(treeWidgetItem_1);
ui->treeWidget->addTopLevelItem(treeWidgetItem_2);


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


ui->treeWidget->insertTopLevelItem(int column,item);
③. 添加子项
//给项目添加子项
treeWidgetItem_1->addChild(treeItem_1);
treeWidgetItem_1->addChild(treeItem_2);
treeWidgetItem_1->addChild(treeItem_3);


item->addChild(item_);  //item 顶级条目  item_ 子项
④. 其他添加函数
//获取顶层条目总数
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
6). 删除树
//删除子项目
treeWidgetItem_1->takeChild(2);

//删除顶级条目
ui->treeWidget->takeTopLevelItem(2);
7).查询树
① 查询对应条目
ui->treeWidget->topLevelItem(int index);
② 查询对应序号
ui->treeWidget->indexOfTopLevelItem(treeWidgetItem_1);
ui->treeWidget->indexOfTopLevelItem(treeWidgetItem_2);
ui->treeWidget->indexOfTopLevelItem(treeWidgetItem_3);
8).树条目操作
① 当前选中行、列
ui->treeWidget->currentItem();
ui->treeWidget->currentColumn();
② 设置选中行、列
//设置选中行
ui->treeWidget->setCurrentItem(treeWidgetItem_1);
//设置选中某行某列
ui->treeWidget->setCurrentItem(treeWidgetItem_1,2);
③ 设置条目选中
//设置选中行
ui->treeWidget->setCurrentItem(treeWidgetItem_1);
④ 当前选中行的上一个选中行
//当前选中行 上一个选中行
ui->treeWidget->currentItemChanged(treeWidgetItem_1, treeWidgetItem_2);
9). 树排序
① 设置自动排序
//获取
ui->treeWidget->isSortingEnabled();
//设置
ui->treeWidget->setSortingEnabled(true);
② 升序降序
//升序
ui->treeWidget->sortByColumn(1, Qt::SortOrder::AscendingOrder);
//降序
ui->treeWidget->sortByColumn(1, Qt::SortOrder::DescendingOrder);
10). 树查找
QString text = "顶级条目2-第2列";
Qt::MatchFlags flags;
ui->treeWidget->findItems(text, flags, 0);
bool isEmpty = ui->treeWidget->findItems(text,Qt::MatchExactly).isEmpty();
11). 清空树
//清空控件
void MainWindow::on_pushButton_2_clicked()
{
    ui->treeWidget->clear();
}
12). 折叠树
//折叠控件
void MainWindow::on_pushButton_3_clicked()
{
    ui->treeWidget->collapseItem(treeWidgetItem_1);
}
13). 展开树
//展开控件
void MainWindow::on_pushButton_4_clicked()
{
    ui->treeWidget->expandItem(treeWidgetItem_1);
}
14). 滚动指定条目
//滚动到指定条目
void MainWindow::on_pushButton_5_clicked()
{
    void scrollToItem(const QTreeWidgetItem * item, QAbstractItemView::ScrollHint hint = EnsureVisible)
}
15). 树单击信号
void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column);
16). 树双击信号
void MainWindow::on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column);
17). 树展开信号
void MainWindow::on_treeWidget_itemExpanded(QTreeWidgetItem *item);
18). 树折叠信号
void MainWindow::on_treeWidget_itemCollapsed(QTreeWidgetItem *item);
19). 列数据变化信号
void MainWindow::on_treeWidget_itemChanged(QTreeWidgetItem *item, int column);

二、QTreeView

参考文章

1. 介绍

QTreeView类继承于QAbstractItemView类,提供了一个树结构视图的模型

QTreeView实现了模型中项目的树表示,模型/视图架构确保树视图的内容随着模型的变化而更新,具有子项的项目可以处于展开或折叠状态

例:构建一个树视图显示模型中的数据


QStandardItemModel *model = new QStandardItemModel;
ui->treeView->setModel(model);

//一级节点
QStandardItem * item = new QStandardItem;
item->setText("一级节点");
model->appendRow(item);
// ui->treeView->setHeaderHidden(true); //设置标题显示与否
ui->treeView->expandAll();  //设置子节点全部展开

//二级节点  (item:此二级节点的父节点)
QStandardItem * item_2= new QStandardItem;
item_2->setText("二级节点");
item_2->setCheckable(true); //设置复选框
item_2->setCheckState(Qt::Checked);
item->appendRow(item_2);

 

2. 样式展示:

3. 样式代码:
QStandardItemModel *model = new QStandardItemModel;
ui->treeView->setModel(model);
QStandardItem *item = new QStandardItem;
item->setText("000");
model->appendRow(item);
insterTreeNode("aaa",item);
insterTreeNode("bbb",item);
insterTreeNode("ccc",item);
insterTreeNode("ddd",item);
ui->treeView->expandAll();
 
void MainWindow::insterTreeNode(QString str,QStandardItem *parent)
{
    QStandardItem *item = new QStandardItem;
    item->setText(str);
    parent->appendRow(item);
}
4. 属性
1). allColumnsShowFocus

表示项是否应该使用所有列显示键盘焦点,默认值为false

//获取
ui->treeView->allColumnsShowFocus();  
//设置
//true所有列将显示焦点,否则只有一列显示
ui->treeView->setAllColumnsShowFocus(bool enable);
2). animated

表示树视图折叠或者展开分支时是否启用动画,默认为False

//获取
ui->treeView->isAnimated(); 
//设置
ui->treeView->setAnimated(bool enable);//false 不显示动画,true 显示动画
3). expandsOnDoubleClick

表示是否双击展开节点,默认为True

//获取
ui->treeView->expandsOnDoubleClick();
//设置
ui->treeView->setExpandsOnDoubleClick(bool enable);
4). headerHidden

表示是否隐藏头标题,默认false

//获取
ui->treeView->isHeaderHidden();
//设置
ui->treeView->setHeaderHidden(bool hide);
5). autoExpandDelay

表示在拖放操作期间打开或关闭树中的项之前的延迟时间(以毫秒为单位)。

如果时间被设置小于0,那么将不会被激活。

默认情况下值为-1,即禁用自动扩展。

//获取
ui->treeView->autoExpandDelay();
//设置
ui->treeView->setAutoExpandDelay(int delay);
6). indentation

表示树视图中每个级别的项目以像素为单位测量的缩进。对于顶级项目,缩进指定从视口边缘到第一列项目的水平距离,对于子项,它指定它们与父项之间的缩进。

默认情况下,值与样式相关。因此,当样式更改时,此属性将从它更新,调用setIndentation( )停止更新,调用resetIndentation()将恢复默认行为。

ui->treeView->indentation();
//停止更新
ui->treeView->setIndentation(int i);
//恢复默认
ui->treeView->resetIndentation();
7). itemsExpandable

表示用户是否可以交互展开和折叠项,默认true

//获取
ui->treeView->itemsExpandable();
//设置
ui->treeView->setItemsExpandable(bool enable);
8). rootlsDecorated

表示是否显示 (展开和折叠顶级项的)控件,默认为true

带有子项目的项目通常显示为展开和折叠他们的控件,从而允许显示或隐藏它们的子项目:若此属性为false,则不会为顶级项显示这些控件。这可以使单个级别的树结构看起来像一个简单的项目列表。

//获取
ui->treeView->rootIsDecorated();
//设置
ui->treeView->setRootIsDecorated(bool show);
9). sortingEnabled

表示是否启用排序,默认为false

//获取
ui->treeView->isSortingEnabled();
//设置
ui->treeView->setSortingEnabled(bool enable);
10). uniformRowHeights

表示是否让视图中的所有项目具有相同的高度,默认false

只有在保证视图中的所有项具有相同高度时,才应该将此属性设置为true

///获取
ui->treeView->uniformRowHeights();
//设置
ui->treeView->setUniformRowHeights(bool uniform);
11). wordWrap

表示是否启用换行,默认false;

启用该属性,则文本将在需要的位置进行换行;

若不换行则需要设置 textElideMode(把超出范围的值显示为省略号)

//获取
ui->treeView->wordWrap();
//设置
ui->treeView->setWordWrap(bool on);
5. 公共函数
1). columnAt

返回给定x坐标所在的行序号

ui->treeView->columnAt(int x);
2). columnViewportPosition

返回给定行号所在的视窗中的水平位置

ui->treeView->columnViewportPosition(int column);
3-1). columnWidth

返回给定行号的宽度

ui->treeView->columnWidth(int column);
3-2). setColumnWidth

设置给定行号的宽度

ui->treeView->setColumnWidth(int column,int width);
4). header

返回头标题信息,封装在QHeaderView中

QHeaderView *header() const
5). indexAbove

返回在给定模型上面的模型

QModelIndex indexAbove(const QModelIndex &index) const
6). indexBelow

返回在给定模型下面的模型

QModelIndex indexBelow(const QModelIndex &index) const
7). isColumnHidden

返回给定的列是否隐藏

QModelIndex indexBelow(const QModelIndex &index) const
8). isRowHidden

返回给定的行是否隐藏

bool isRowHidden(int row, const QModelIndex &parent) const
9-1). isFirstColumnSpanned

如果父元素给定行的第一列中的项跨越所有列,则返回true,否则返回false

bool isFirstColumnSpanned(int row, const QModelIndex &parent) const
9-2). setFirstColumnSpanned

如果span为true,则具有给定父元素的行中第一列中的项被设置为跨所有列,否则显示该行上的所有项。

void setFirstColumnSpanned(int row, const QModelIndex &parent, bool span)
10-1) . setTreePosition 

指定树结构应该放在逻辑索引处。如果设置为-1,则树将始终跟随视觉索引为0

ui->treeView->setTreePosition(int index);
10-2). treePosition

返回设置树的逻辑索引。如果返回值为-1,则树被放置在可视索引0上

ui->treeView->treePosition();
6. 公共槽函数
1). collapse

折叠给定的节点

void collapse(const QModelIndex &index)
2). collapseAll

折叠全部的节点

ui->treeView->collapseAll();
3). expand

展示给定的节点

void expand(const QModelIndex &index)
4). expandAll

展示全部节点

ui->treeView->expandAll();
5). expandRecursively

将给定索引处的项目及其所有子项扩展到给定深度。(深度是相对于给定索引的)深度为-1将扩展所有子项,深度为0将仅扩展给定索引。

如果模型包含大量项目,此功能将需要一些时间来执行

void expandRecursively(const QModelIndex &index, int depth = -1)
6). expandToDepth

将所有可扩展项目扩展到给定深度;

展开节点带深度,如果是-1展开全部节点,如果是0则展开给定的索引

void expandToDepth(int depth)
7). hideColumn

隐藏给定的列

ui->treeView->hideColumn(int column);
8). resizeColumnToContents

恢复列的宽度设置

ui->treeView->resizeColumnToContents(int column);
9). showColumn

展示给定的列

ui->treeView->showColumn(int column);
10). sortByColumn

升序或降序进行排列

ui->treeView->showByColumn(int column,Qt::SortOrder order);

//例 Qt::SortOrder order = Qt::AscendingOrder

7. 信号
1). collapsed

有节点折叠的时候信号产生

void collapsed(const QModelIndex &index)
2). expand

有节点展开时信号产生

void expanded(const QModelIndex &index)

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

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

相关文章

对中国境内所有地区KFC门店基本信息的统计(简略版)

我们要获取每个地区的kfc信息就要先获取中国一共有哪些地区 中国所有城市名称获取 import requests from lxml import etreewith open(f./省份.txt, w) as fp:fp.write() with open(f./城市.txt, w) as fp:fp.write()url1http://www.kfc.com.cn/kfccda/storelist/index.aspx#…

高度塌陷问题及解决

什么情况下产生 (when 父盒子没有定义高度&#xff0c;但是子元素有高度&#xff0c;希望用子盒子撑起父盒子的高度&#xff0c;但是子盒子添加了浮动属性之后&#xff0c;父盒子高度为0 <template><div class"father"><div class"son"&…

【兔子机器人】修改GO电机id(软件方法、硬件方法)

一、硬件方法 利用上位机直接修改GO电机的id号&#xff1a; 打开调试助手&#xff0c;点击“调试”&#xff0c;查询电机&#xff0c;修改id号&#xff0c;即可。 但先将四个GO电机连接线拔掉&#xff0c;不然会将连接的电机一并修改。 利用24V电源给GO电机供电。 二、软件方…

LoadBalancer (本地负载均衡)

1.loadbalancer本地负载均衡客户端 VS Nginx服务端负载均衡区别 Nginx是服务器负载均衡&#xff0c;客户端所有请求都会交给nginx&#xff0c;然后由nginx实现转发请求&#xff0c;即负载均衡是由服务端实现的。 loadbalancer本地负载均衡&#xff0c;在调用微服务接口时候&a…

Linux文件和文件夹操作

前言&#xff1a; 相较于前面背诵的诸多内容&#xff0c;可能现在的部分就需要多多的练习了&#xff0c;难度也慢慢提升。 那就大家一起慢慢努力吧&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 目录 一、Linux目录结构 &#xff08;一&#xff09;Window…

2024年AI辅助研发趋势深度分析

2024 年 AI 辅助研发趋势 随着人工智能技术的持续发展与突破&#xff0c;2024年AI辅助研发正成为科技界和工业界瞩目的焦点。从医药研发到汽车设计&#xff0c;从软件开发到材料科学&#xff0c;AI正逐渐渗透到研发的各个环节&#xff0c;变革着传统的研发模式。在这一背景下&a…

果蔬作物疾病防治系统|基于Springboot的果蔬作物疾病防治系统设计与实现(源码+数据库+文档)

果蔬作物疾病防治系统目录 目录 基于Springboot的果蔬作物疾病防治系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、果蔬百科列表 2、公告信息管理 3、公告类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推…

最简单的基于 FFmpeg 的内存读写的例子:内存转码器

最简单的基于 FFmpeg 的内存读写的例子&#xff1a;内存转码器 最简单的基于 FFmpeg 的内存读写的例子&#xff1a;内存转码器正文源程序结果工程文件下载参考链接 最简单的基于 FFmpeg 的内存读写的例子&#xff1a;内存转码器 参考雷霄骅博士的文章&#xff0c;链接&#xf…

利用华为CodeArts持续交付项目演示流程

软件开发生产线&#xff08;CodeArts&#xff09;是面向开发者提供的一站式云端平台&#xff0c;即开即用&#xff0c;随时随地在云端交付软件全生命周期&#xff0c;覆盖需求下发、代码提交、代码检查、代码编译、验证、部署、发布&#xff0c;打通软件交付的完整路径&#xf…

C语言:通讯录(纯代码)

目录 背景&#xff1a;VS2019编译器 创建文件&#xff1a; contact.h代码&#xff1a; test.c代码&#xff1a; contact.c代码&#xff1a; 背景&#xff1a;VS2019编译器 创建文件&#xff1a; contact.h代码&#xff1a; #pragma once#include <string.h> #includ…

GTH手册学习注解

CPLL的动态配置 终于看到有这个复位功能了 QPLL SWITCHing需要复位 器件级RESET没发现有管脚引出来 两种复位方式&#xff0c;对应全复位和器件级复位 对应的复位功能管脚 改那个2分频的寄存器说明段&#xff0c;复位是自动发生的&#xff1f;说明可能起效了&#xff0c;但是分…

STM32---通用定时器(二)相关实验

写在前面&#xff1a;前面我们学习了基本定时器、通用定时器的相关理论部分&#xff0c;了解到通用定时器的结构框图&#xff0c;总共包含六大模块&#xff1a;时钟源、控制器、时基单元、输入捕获、公共部分以及输出捕获。对相关模块的使用也做详细的讲解。本节我们主要是对上…

【NR 定位】3GPP NR Positioning 5G定位标准解读(八)- OTDOA定位

前言 3GPP NR Positioning 5G定位标准&#xff1a;3GPP TS 38.305 V18 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;…

少儿编程 蓝桥杯青少组科技素养题 信息素养真题及解析第25套

少儿编程 科技素养 信息素养真题第25套 1、旅行结束之后&#xff0c;回到家的小蓝决定将照片备份在云端的网盘上。备份照片主要占用的是小蓝家的( )带宽 A、下行 B、上行 C、文件 D、数据 答案&#xff1a;B 考点分析&#xff1a;主要考查网络相关知识&#xff0c;要将照…

多种方法求解数组排序

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary_walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

基于GAN对抗网进行图像修复

一、简介 使用PyTorch实现的生成对抗网络&#xff08;GAN&#xff09;模型&#xff0c;包括编码器&#xff08;Encoder&#xff09;、解码器&#xff08;Decoder&#xff09;、生成器&#xff08;ResnetGenerator&#xff09;和判别器&#xff08;Discriminator&#xff09;。…

CSS中有哪些方式可以隐藏页面元素(区别详解)

文章目录 一、前言二、实现方式display:nonevisibility:hiddenopacity:0设置height、width属性为0position:absoluteclip-path小结 三、区别参考文献 一、前言 在平常的样式排版中&#xff0c;我们经常遇到将某个模块隐藏的场景 通过css隐藏元素的方法有很多种&#xff0c;它…

HttpURLConnection详解及使用

HttpURLConnection 请求响应流程 设置连接参数的方法 setAllowUserInteractionsetDoInputsetDoOutputsetIfModifiedSincesetUseCachessetDefaultAllowUserInteractionsetDefaultUseCaches 发送URL请求 建立实际连接之后&#xff0c;就是发送请求&#xff0c;把请求参数传到…

探讨系统测试的最佳实践与思维模式!

这是测试活动过程详解系列的最后一篇文章。之前的想法&#xff0c;是对测试过程各重要环节进行拆解&#xff0c;然后介绍这个环节重点要做的事情&#xff0c;为什么要做这些事&#xff0c;以及注意事项。 前面几篇文章分别介绍了单元测试、集成测试、回归测试阶段要解决的问题…

初识C语言—初识C语言

前言 C语言全面了解&#xff0c;全貌认识 细致的学习&#xff0c;细枝末节 什么是C语言 维基百科 C 语言是一种通用的高级语言&#xff0c;最初是由丹尼斯里奇在贝尔实验室为开发 UNIX 操作系统而设计的。C 语言最开始是于 1972 年在 DEC PDP-11 计算机上被首次实现。 在 1978 …