Qt_控件的QWidget属性介绍

news2024/11/14 2:48:49

目录

1、QWidget的核心属性

2、enabled

3、geometry

3.1 代码测试geometry

4、windowTitle

4.1 代码测试windowTitle

5、windowIcon

5.1 QIcon设置图标

5.2 qrc机制 

5.3 代码测试windowIcon 

6、windowOpacity

6.1 代码测试windowOpacity

7、cursor

7.1 代码测试cursor

8、font 

8.1 代码测试font

9、toolTip

9.1 代码测试toolTip

10、focusPolicy

10.1 代码测试focusPolicy

11、styleSheet 

11.1 代码测试styleSheet 

结语 


前言:

        控件是Qt中非常重要的概念,在Qt中所有的控件都是直接或间接继承自QWidget类。一个完整的界面是由多个控件组成的,因此开发图形化界面就离不开控件。控件英文名为Widget,在Qt中,内置控件包含但不限于按钮,文本、单行输入框,多行输入框,滚动条,下拉框等。并且Qt支持自定义控件,这让开发者得以实现各式各样的DIY控件设计。

1、QWidget的核心属性

        由于Qt中所有的控件都是继承自QWidget类,因此每个控件中都会有QWidget类的属性,在ui文件中,从右边栏中随便拖拽一个控件至界面中,选中该控件,即可在右下角看到该控件里的QWidget属性。示意图如下:

        可以看到QWidget属性内容是非常多的,我们只需要记住一些常用的即可,具体属性介绍如下:

enabled

设置控件是否可使⽤,true 表示可⽤,false 表示禁⽤

geometry

以父元素坐标为原点,设置控件位置和尺⼨,包含x,y,width,height四个部分

windowTitle

设置 widget 标题

windowIcon

设置 widget 图标

windowOpacity

设置 widget 透明度

cursor

设置⿏标悬停时显⽰的图标形状,比如是普通箭头,还是沙漏,还是⼗字等形状

font

设置字体相关属性,比如字体家族,字体大小,粗体,斜体,下划线等等

toolTip

⿏标悬停在控件上会在状态栏中显示的提示信息

toolTipDuring

toolTip 显示的持续时间

minimumSize

控件的最⼩尺⼨,包含最⼩宽度和最⼩⾼度

maximumSize

控件的最⼤尺⼨,包含最⼤宽度和最⼤⾼度

sizePolicy

尺⼨策略,设置控件在布局管理器中的缩放⽅式

2、enabled

        enabled表示设置控件是否可使⽤(默认控件都是可以使用的),在ui文件中可以直接对enabled属性进行勾选。当禁用了一个控件的enabled意味该控件不能接收任何用户的输⼊事件,在外观上往往是灰⾊的且无法选中该控件,如果⼀个控件被禁⽤,则该控件的⼦控件也会被禁⽤。

        示例如下:


        上述是用界面的方式进行禁用,还可以使用代码的方式对控件的enabled属性设置禁用,Qt提供了两个接口如下:

isEnabled() 获取到控件的enabled状态
setEnabled() 参数传true或者false,表示设置控件是否可使⽤

        测试代码如下: 

#include "widget.h"
#include "ui_widget.h"

#include <QPushButton>

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

    QPushButton* p = new QPushButton("按钮",this);
    p->setEnabled(false);//该按钮被设置为禁用状态
}

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

        测试结果进行对比(右图为上述代码的运行结果):

3、geometry

         geometry表示控件所处的位置(横、纵坐标)和控件本身的尺寸(长*宽),用四个属性来表示他们:x(横坐标)、y(纵坐标)、width(宽度)、height(高度)。并且是以父控件的左上角为原点的。

        有了上述四个属性,就可以在界面中描绘处一个控件,不过在此之前,先了解Qt中的坐标系的规定,Qt的坐标系和数学中的笛卡尔坐标系不同,Qt坐标系为左手坐标系,该坐标系的结构如下:


        Qt中提供了两个关于geometry的接口,该接口介绍如下:

geometry() 
//获取到控件的位置和尺⼨. 返回结果是⼀个QRect类型的对象, 
//该对象包含了 x, y, width, height四个成员


setGeometry(QRect)
setGeometry(int x, int y,int width, int height)
//设置一个控件的geometry,可以传QRect对象,也可以直接传四个属性

        有了上述的基础概念,就可以对一个控件进行位置和尺寸的设置了。

3.1 代码测试geometry

        实现四个方向按钮来控制另一个按钮的位置,即按下左移按钮,则被控制的按钮向左移动。具体示意图如下:

        实现上下左右四个按钮的槽函数。当按下这四个按钮时会发送对应的信号,这些信号就会触发对应的槽函数,每个槽函数都会使上面的移动按钮向对应方向移动若干距离,槽函数代码如下:

#include "widget.h"
#include "ui_widget.h"

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

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


void Widget::on_pushButton_clicked()//向上移动
{
    QRect q = ui->pushButton_move->geometry();
    ui->pushButton_move->setGeometry(q.x(),q.y()-50,q.width(),q.height());
}

void Widget::on_pushButton_2_clicked()//向左移动
{
    QRect q = ui->pushButton_move->geometry();
    ui->pushButton_move->setGeometry(q.x()-50,q.y(),q.width(),q.height());
}

void Widget::on_pushButton_3_clicked()//向下移动
{
    QRect q = ui->pushButton_move->geometry();
    ui->pushButton_move->setGeometry(q.x(),q.y()+50,q.width(),q.height());
}

void Widget::on_pushButton_4_clicked()//向右移动
{
    QRect q = ui->pushButton_move->geometry();
    ui->pushButton_move->setGeometry(q.x()+50,q.y(),q.width(),q.height());
}

        测试结果:

        可以从结果看到,点击左移按钮使,上面的按钮向左移动了,同理其他按钮也是一样的效果。 

4、windowTitle

        该属性顾名思义表示窗口的标题,当我们生成一个界面使,可以看到该界面顶层是有一个标题的,如下图:

        Qt提供了两个对窗口标题操作的接口,如下:

windowTitle() //获取当前窗口的标题

setWindowTitle(constQString& title) //设置当前窗口标题

//值得注意的是,调用这两个接口的控件的顶层必须有窗口标题,否则调用不会产生效果

4.1 代码测试windowTitle

        通过让widget去调用setWindowTitle函数,达到设置窗口标题的作用,代码如下:

#include "widget.h"
#include "ui_widget.h"

#include <QPushButton>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setWindowTitle("设置窗口标题");
}

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

        测试结果:

        这里必须要用this指针去调用,因为this指针代表widget,而widget的顶层含窗口标题。不能用一个创建出来的控件去调用setWindowTitle,因为那样做不会产生任何效果。

5、windowIcon

        windowIcon表示窗口的图标,从上面的图片中可以看到窗口标题旁边有一个图标,windowIcon就是描述窗口图标的属性。Qt提供了两个对窗口图标进行操作的接口,接口介绍如下:

windowIcon() //获取窗⼝图标,返回QIcon对象,QIcon就是图标的代码表现形式

setWindowIcon(const QIcon& icon) //设置窗⼝图标

        这两个接口的用法逻辑和windowTitle是一样的,只不过把图标封装成QIcon类。并且大部分场景是使用setWindowIcon接口对窗口图标进行设置。

5.1 QIcon设置图标

        将图标所在的路径以字符串的形式传给QIcon,然后把QIcon传给setWindowIcon,此时编译器会依据QIcon里的路径找到这个图标。由于开发的界面程序是要发给用户的,因此也会把对应的图标文件发给用户,一般会使用相对路径的方式,将图标文件扎入至用户的磁盘中。但是这么做会将图标暴露在外,即用户可以删除这个图标文件,这样一来程序就会会问题,所以针对图标存放问题,一般采用qrc机制。

5.2 qrc机制 

        qrc机制解决的两个问题:1、确保图标文件在用户主机上。2、确保图标不会被轻易的删除。 qrc是一种创建虚拟目录,并把图标文件导入到该目录下的方式来解决以上两个问题的,可以理解为图标文件模拟了一个目录环境。生成qrc文件的如下。

        1、点击新建项目,然后选择Qt里的Qt Resource File:

        2、给qrc文件定义一个文件名:

        3、然后一直点击下一步,就生成完毕了:

        4、现在只是创建了qrc文件,还需要在该文件中生成虚拟目录:

        点击add Files会打开一个目录,该目录就是当前代码所在的目录,并且要导入的图标必须该目录下。

        5、点击Add Files后,选择要添加的图标:

        6、最终可以看到虚拟目录下的图标文件,表示添加完成:

        以上就是qlc虚拟目录的创建,后续只需要在代码中将该虚拟目录的路径给到QIcon对象就可以设置窗口图标了。 

5.3 代码测试windowIcon 

        在代码中用刚刚导入的图标文件的路径创建QIcon对象,然后用该对象进行设置图标:

#include "widget.h"
#include "ui_widget.h"

#include <QIcon>

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

    QIcon q(":/rose.png");//找到刚刚图标文件的路径
    this->setWindowIcon(q);
}

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

        运行结果:

        从结果可以看到,窗口图标已经被更改。 

6、windowOpacity

        windowOpacity表示控件的透明度属性,Qt提供了两个关于此属性的接口:

windowOpacity() 
//获取到控件的不透明数值,返回值的类型为float, 
//范围为0.0 -> 1.0 其中 0.0 表⽰全透明, 1.0 表⽰完全不透明

setWindowOpacity(float n)
//设置控件的不透明数值

        即数值越接近0.0则控件的背景是越透明,数值越接近1.0则相反。

6.1 代码测试windowOpacity

         创建两个按钮,一个按钮被点击会增加当前窗口的不透明度,另一个按钮被点击会增加当前窗口的透明度,代码如下:

        定义这两个按钮的槽函数:

#include "widget.h"
#include "ui_widget.h"

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

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


void Widget::on_pushButton_add_clicked()
{
    float f = this->windowOpacity();
    f+=0.1;//增加不透明度
    this->setWindowOpacity(f);
}

void Widget::on_pushButton_sub_clicked()
{
    float f = this->windowOpacity();
    f-=0.1;//增加透明度
    this->setWindowOpacity(f);
}

        运行结果:

7、cursor

         cursor属性表示鼠标的样式,即当鼠标移至控件内时,鼠标的样式会变成该控件cursor属性的样式,可以在ui文件中看到cursor内置的样式:

        此外,Qt还提供了关于cursor属性的三个函数,介绍如下:

cursor() 
//获取到当前控件的cursor属性, 返回QCursor对象
//当⿏标悬停在该控件上时, 就会显⽰出对应的形状.

setCursor(const QCursor& cursor) 
//设置⿏标停留在该控件上的光标形状

QGuiApplication::setOverrideCursor(const QCursor& cursor)
//设置全局光标的形状,对整个程序中的所有控件都会⽣效
//并且覆盖上⾯的 setCursor 设置的内容.

7.1 代码测试cursor

        可以对上述设置窗口图标的代码进行添加鼠标图标替换功能,代码如下:

#include "widget.h"
#include "ui_widget.h"

#include <QIcon>

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

    QIcon q(":/rose.png");//找到刚刚图标文件的路径
    this->setWindowIcon(q);

    QPixmap qp(":/rose.png");//用QPixmap的对象来初始化QCursor
    qp = qp.scaled(100,100);//缩小光标大小
    QCursor qc(qp);
    this->setCursor(qc);//设置widget窗口内的鼠标图标
}

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

        运行结果(由于电脑截图不方便看出效果,因此用手机拍摄):

8、font 

        font表示控件内的字体属性,可以在ui界面中查看font都有哪些属性:

        而在代码中Qt提供两个关于font的函数,介绍如下:

font() 
//获取当前控件的字体信息,这些信息都被保存在QFont里

setFont(const QFont& font) 
//传入QFont类型的对象,以设置当前控件的字体信息

8.1 代码测试font

        因此需要对控件中的字体做样式修改,则需要先定义一个QFont对象,在该对象中把各属性的样式都设置好,然后用控件调用setFont函数,并把该对象传给setFont,代码如下:

#include "widget.h"
#include "ui_widget.h"

#include <QLabel>

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

    QLabel* label = new QLabel(this);
    label->setText("hello Qt");

    QFont qf;
    qf.setFamily("微软雅黑");
    qf.setPixelSize(40);
    qf.setUnderline(true);

    label->setFont(qf);
}

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

        测试结果:

9、toolTip

         toolTip顾名思义指的是提示,即当鼠标悬停在控件上时,会出现一个小框框,框里的内容就是自定义的提示说明。并且Qt提供了两个操作toolTip的函数,介绍如下:

setToolTip() 设置悬停时的提⽰说明

setToolTipDuring() 设置提示说明的显示时间,单位毫秒

9.1 代码测试toolTip

         代码如下:

#include "widget.h"
#include "ui_widget.h"

#include <QPushButton>

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

    QPushButton* p = new QPushButton("按钮",this);
    p->move(300,300);

    p->setToolTip("这是一个普通的按钮");
    p->setToolTipDuration(5000);//该提示在5秒后消散

}

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

        测试结果:

10、focusPolicy

        focusPolicy表示焦点政策,该属性表示某个控件能否被⿏标选中或者能否通过tab键选中,比如输入数据至输入框时,首先得用鼠标点击输入框,这个过程就是焦点的选中。当然,输入框默认可以被tab键和鼠标选中,但是label这样的控件默认就是无法选中焦点的。

        Qt提供关于focusPolicy函数的介绍如下:

focusPolicy()//获取控件的焦点,返回值是FocusPolicy,是一个枚举类型

setFocusPolicy(Qt::FocusPolicy policy) 设置控件的焦点政策

        首先,FocusPolicy类型有如下常量:

• Qt::NoFocus :控件不会接收焦点
• Qt::TabFocus :控件可以通过Tab键接收焦点
• Qt::ClickFocus :控件可以通过⿏标点击接收焦点
• Qt::StrongFocus :控件可以通过Tab键和⿏标点击接收焦点 (默认值)
• Qt::WheelFocus : 类似于 Qt::StrongFocus , 同时控件也通过⿏标滚轮获取到焦点 (新增
的选项, ⼀般很少使⽤).

10.1 代码测试focusPolicy

        创建一个单行输入框,默认该输入框是可以获得鼠标焦点以及键盘tap焦点的,如下图:

         通过代码可以对该输入框的焦点政策做修改,代码如下:

#include "widget.h"
#include "ui_widget.h"

#include <QLineEdit>

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

    QLineEdit* q = new QLineEdit(this);
    q->move(300,300);
    q->setFocusPolicy(Qt::NoFocus);//设置该控件不能获取到焦点
}

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

        运行结果:

11、styleSheet 

        该属性支持QSS对控件的样式进行设置,QSS是CSS的一部分。CSS (Cascading Style Sheets 层叠样式表) 本⾝属于网页前端技术,主要就是用来描述界面的样式,只不过CSS的样式更为丰富,因此Qt同样支持了CSS,不过只支持了其一部分,因此称为QSS。

        其中Qt也提供了一个函数,可以通过该函数完成QSS的样式修改,该函数介绍如下:


QString styleSheet() const//返回当前控件的样式,以字符串的形式返回

void setStyleSheet(const QString &styleSheet)//设置当前控件的样式

11.1 代码测试styleSheet 

        这里对QString的格式有要求,即:使用键值对的方式设置样式,其中键和值之间使用 : 分割,:左边是属性,右边是样式。多个键值对之间使⽤ ; 分割。测试代码如下:

#include "widget.h"
#include "ui_widget.h"

#include <QPushButton>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    QPushButton* p = new QPushButton("QSS",this);

    p->setStyleSheet("color:blue;background-color:green;font-style:italic");
}

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

        测试结果:

结语 

        以上就是关于QWidget的属性介绍,QWidget是Qt控件中核心的一个类,他提供了控件所需的基本功能,比如尺寸、位置、字体、等基本属性,以及焦点获取(如鼠标点击、键盘输入等)的能力,控件必须有这些属性才能真正意义上的成为一个控件。理解QWidget的基本属性是掌握使用控件的基本条件之一。

        最后如果本文有遗漏或者有误的地方欢迎大家在评论区补充,谢谢大家!!    

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

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

相关文章

使用xjar+exe4j+inno setup把加密后的jar打包成exe应用程序并创建服务

1、使用xjar对jar包进行加密 在项目的pom.xml中加入xjar的插件依赖&#xff0c;最好用2.x.x版本&#xff0c;高版本不支持-Dxjar.mode&#xff0c;无法免密码启动 github地址&#xff1a;xjar-maven-plugin <plugin><groupId>com.github.core-lib</groupId>…

RDD2022 道路瑕疵检测数据集

RDD2022 道路瑕疵数据集 txt标签或者xml标签 一共23767张图片 D00 D01 D20 D40四类 D00纵向裂缝 D10横向裂缝 D20网状裂缝 D40坑洞。 RDD2022 道路瑕疵检测数据集介绍 数据集概述 RDD2022&#xff08;Road Defect Detection 2022&#xff09;是一个专门用于道路瑕疵检测的数…

【MATLAB GUI 设计第一篇 】

文章目录 前言一、MATLAB GUI 是什么&#xff1f;二、guide 的使用1.进入GUI界面2. 布置绘图3.修改字体4. 回调函数&#xff0c;完成功能5. 整个函数和回调函数6.修改回调函数7. 显示效果8. 补充 三、 APP 的使用1.进入APP界面2.在 APP 菜单下 新建空白APP3.创建回调函数4.显示…

OpenCV class2-C#+winfrom显示控件使用窗口大小并内存管理

一.控件效果说明 二.代码声明&#xff08;已经循环读取10000次&#xff09; 全局 OpenCvSharp.Point point new OpenCvSharp.Point(0, 0); OpenCvSharp.Size size2; Mat src new Mat(); 初始化 size2 new OpenCvSharp.Size(pictureBox1.Size.Width, pictureBox1.Size.Hei…

京东技术专家的修炼之道|“六边形战士”周默分享

前言 最近&#xff0c;京东零售智能增长研发总监周默在京东内部分享了他在京东工作近10年的经验与成长。周默自2015年加入京东以来&#xff0c;经历了后端架构、大数据、基础算法和业务算法等多个技术领域&#xff0c;获得了集团金项奖、最美京东人、集团算法大牛等多项荣誉&a…

C语言错题本

本学渣在一个人学习的途中遇到过许多问题 如果没有老师的帮助可能很长时间都走不出来 所以我也希望我的错误能帮助到你 9月13日 题一 未赋值的局部指针是野指针(C) 题二 PS:对于指针来说&#xff0c;传递的是指针值的副本&#xff0c;point 函数内部对 p 的任何修改都不会影响…

ClickHouse的安装配置+DBeaver远程连接

1、clickhouse的下载&#xff1a; 先去clickhouse官网进行下载&#xff0c;继续往下翻找文档&#xff0c;将DBeaver也下载下来 下载地址&#xff1a;https://packages.clickhouse.com/rpm/stable/ 下载这个四个rpm包 2、上传rmp文件到Linux中 自己创建的一个clickhouse-ins…

3DGS:3D Gaussian Splatting for Real-Time Radiance Field Rendering 论文解读

目录 一、导言 二、相关工作 1、传统场景重建 2、神经渲染与辐射场 3、点云渲染 三、3DGS 1、SFM初始化稀疏点云 2、3D高斯椭球 3、协方差 4、球谐函数 5、3D高斯椭球集建立 6、3D投影2D 7、3D渲染公式 四、损失函数 五、基于梯度自适应改变点云的分布方式 六…

第四天旅游线路预览——从贾登峪到喀纳斯景区入口(贾登峪游客服务中心)

第四天&#xff1a;从贾登峪到喀纳斯风景区入口&#xff0c;晚上住宿贾登峪&#xff1b; 从贾登峪到喀纳斯景区入口&#xff08;贾登峪游客服务中心&#xff09;&#xff1a; 1&#xff09;早上8&#xff1a;00起床&#xff0c;吃完早饭&#xff0c;8&#xff1a;30出发&#…

Leetcode 旋转图像

解题思路&#xff1a; 转置矩阵&#xff1a;通过将矩阵的行列互换来实现转置操作。水平翻转矩阵&#xff1a;通过将每行的数据进行对称交换&#xff0c;从而完成90度旋转。 通过这两个步骤&#xff0c;矩阵就会顺时针旋转90度。 class Solution { public:void rotate(vector…

Unity报错:error CS8805: Program using top-level statements must be an executable.

大多数人都不想犯错&#xff0c;但压力大时总是动作变形 大概意思网上查了一下&#xff0c;就是说 C# 的第一&#xff08;top)行有错误&#xff0c;或者类&#xff08;类的头部&#xff09;就没写全 这什么意思呢&#xff1f;又定位不到具体是哪个类 但肯定是刚修改了一点点代…

RocketMQ 基本概念

RocketMQ的由来 随着使⽤中队列和虚拟主题的增加&#xff0c;阿⾥巴巴团队使⽤的 ActiveMQ IO 模块达到了瓶颈。为了尽⼒通过节流、断路器或降级来解决这个问题&#xff0c;但效果不佳。所以开始 关注当时流⾏的消息传递解决⽅案Kafka 。不幸的是&#xff0c; Kafka ⽆法满⾜…

【linux笔记dpkg-buildpackage打包】把一个helloworld程序打包为deb包

说明 打包发布可以不用编译源代码安装&#xff0c;看起来是更方便的软件拷贝方式&#xff0c;下面是一个dpkg-buildpackage工具的最简打包过程实例 先建立一个helloworld程序 main.c #include <stdio.h>int main() {printf("Hello, World!\n");return 0; }…

小程序开关组件

前提是vant组件库不太好改&#xff0c;干脆就手写了一个 <template><view class"switch-container" click"toggleOrder"><view :class"[switch-text, left-text, { left-textChoose: isReverseOrder }]">{{ leftText }}</…

渣土车监控摄像头

渣土车监控摄像头 是一种结合了监控摄像技术和车辆安全管理的先进设备&#xff0c;旨在通过实时监测和录制车辆行驶过程中的画面&#xff0c;提高渣土车的安全性和管理效率。这种摄像头在建筑工地、城市道路、交通执法等领域有着广泛的应用前景。 渣土车监控摄像头在建筑工地运…

在AIoT设备上加速深度神经网络推理的进展:一项综述

这篇论文的标题是《Advancements in Accelerating Deep Neural Network Inference on AIoT Devices: A Survey》&#xff0c;作者是 Long Cheng, Yan Gu, Qingzhi Liu, Lei Yang, Cheng Liu, Ying Wang。论文主要探讨了在人工智能物联网&#xff08;AIoT&#xff09;设备上加速…

多层建筑能源参数化模型和城市冠层模型的区别

多层建筑能源参数化&#xff08;Multi-layer Building Energy Parameterization, BEP&#xff09;模型和城市冠层模型&#xff08;Urban Canopy Model, UCM&#xff09;都是用于模拟城市环境中能量交换和微气候的数值模型&#xff0c;但它们的侧重点和应用场景有所不同。以下是…

重要涉密文件如何防窃取?一分钟了解这5个有效的办法,超实用!

在信息化时代&#xff0c;重要涉密文件承载着企业的核心业务机密、技术专利和敏感客户信息等关键数据。 一旦这些文件被不法分子窃取&#xff0c;不仅会导致无法估量的经济损失&#xff0c;还会严重损害企业的声誉。 因此&#xff0c;构建一个全面的防护体系来防止涉密文件被…

癌症细胞状态的十年探索:单细胞RNA测序的启示

癌症细胞状态的十年探索&#xff1a;单细胞RNA测序的启示 引言 在过去的十年里&#xff0c;单细胞RNA测序&#xff08;scRNA-seq&#xff09;技术彻底改变了我们对复杂生物系统的理解&#xff0c;尤其是在癌症研究领域。癌症作为一种由多种遗传克隆和恶性细胞状态组成的复杂生…