Qt Quick、QML01——QML内容结构介绍

news2024/11/26 22:43:05

目录标题

    • 一、从Window 窗口组件开始
    • (一)属性
      • flags 表:
      • visibility 表
    • (二)信号和处理器(槽函数)(通用)
    • (三)调用函数(通用)
    • (四)变量(通用)
    • (五)Math类使用(通用)
    • 二、更多属性介绍
    • (一)分组属性
    • 三、QML对象树
    • 四、Qt Quick App启动方式
    • 五、ltem组件
    • (一)属性表
      • 属性表
      • anchors表
      • 瞄点的介绍
    • 六、FileDialog
        • 一些属性
        • 信号处理器
        • 实例

一、从Window 窗口组件开始

在 Qt Quick 的世界里,Window对象用于创建一个与操作系统相关的顶层窗口,而其他元素,如Text、Rectangle、Image等,都是在Window提供的场景内表演的演员。Window还有一个派生类,即大名鼎鼎的ApplicationWindow,也可以作为QML文档的根对象。ApplicationWindow有点儿像QMain Window,有menuBar、toolBar、statusBar属性,分别用来设置菜单、工具栏、状态栏;还有contentIltem,可以用来设置内容元素的尺寸属性。前面我们提到的使用QQuickView加载QML的方式,顶层窗口是由QQuickView创建的。

(一)属性

在这里插入图片描述

  • 一般的属性:
    在这里插入图片描述
  • 附加的属性:

在这里插入图片描述
调用方式:

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("test")
    //调用特殊属性
    Text {
        y:10
        text: Window.active ? "active" : "inactive"
    }

    Text {
        y:50
        text: Window.activeFocusItem ? "鼠标焦点落在窗口上" : "鼠标焦点没有落在窗口上"
    }

    Text {
        y:100
        text: Window.visibility ==Window.Maximized ? "窗口是最大" : "不是"
    }
    Text {
        y:150
        text: "窗口高="+Window.height +" 窗口宽="+Window.width
    }
}

属性表

Window 常用且不会使用的属性介绍
visible标志着窗口、组件是否可见,true可见,false 不可见
title窗口的标题,设置后在窗口的左上角会显示自己的标题
active窗口是否活动状态。(你的鼠标点击其他页面后就会失去活跃状态,窗口位于最顶层(最前面)就是活跃的)
activeFocusItem与active 作用有点类似。此附加属性保存当前具有活动焦点的项,如果没有活动焦点的项则为空。窗口附加属性可以附加到任何项目。
colorcolor: “#0078D7” 、color: Qt.rgba(0,120,215,1) 设置窗口背景颜色
flags : Qt::WindowFlags窗口的窗口标志。窗口标志控制窗口在窗口系统中的外观,它是一个对话框、弹出窗口还是一个常规窗口,以及它是否应该有一个标题栏等。如果无法满足所请求的标志,则从此属性读取的标志可能与您设置的标志不同。具体属性如:flags 常用值表:
opacity窗口透明度,值大于等于1,完全显示,不透明,小于等于0为完全透明,0~1之间渐变
visibility窗口的屏幕占用状态。可见性是指窗口在窗口系统中的显示方式是正常、最小化、最大化、全屏还是隐藏。将可见性设置为AutomaticVisibility意味着给窗口一个默认的可见状态,根据平台的不同,可能是FullScreen或Windowed。然而,当读取可见性属性时,你总是会得到实际的状态,而不是AutomaticVisibility。当一个窗口不可见时,它的可见性为Hidden,将可见性设置为Hidden与将可见性设置为false相同。visibility 值如:visibility 表
data
contentOrientationcontentOrientation 属性用来设置窗口的内容布局方向,可以取下列值:. Qt.PrimaryOrientation,使用显示设备的首选方向。1. Qt.LandscapeOrientation,横屏。2. Qt.PortraitOrientation,竖屏。3. Qt.InvertedLandscapeOrientation,相对于横屏模式,旋转了180°。4. Qt.InvertedPortraitOrientation,相对于竖屏模式,旋转了180°。contentOrientation属性设置的内容方向,与Android 智能手机的横屏、竖屏模式是不同的概念,要想使你的应用在Android手机上固定采用横屏或竖屏模式,则需要修改AndroidManifest.xml 中的 activity元素的android:screenOrientation属性为“landscape”或"portrait”。

flags 表:

常量(调用这个就好)介绍
Qt::Widget(调用: flags: "Widget"。后面调用方式一样 )0x00000000这是QWidget的默认类型。如果有父窗口,这种类型的小部件是子窗口,如果没有父窗口,则是独立窗口。
Qt::Window0x00000001指示小部件是一个窗口(标志这个组件的类型为窗口类型),通常具有窗口系统框架和标题栏,不管小部件是否有父组件。注意,如果不可能取消此标志这个小部件没有父组
Qt::Dialog0x00000002 | Window指示小部件是一个应该装饰为对话框的窗口(即,在标题栏中通常没有最大化或最小化按钮)。 这是QDialog的默认类型。如果你想使用它作为一个模态对话框,它应该从另一个窗口启动,或者有一个父窗口并与QWidget::windowModality属性一起使用。 如果将其设置为模态对话框,则该对话框将阻止应用程序中的其他顶级窗口获得任何输入。我们将具有父窗口的顶级窗口称为辅助窗口。
Qt::Sheet0x00000004 | Window 指示该窗口是macOS上的工作表。因为使用工作表意味着窗口模式,所以推荐使用QWidget::setWindowModality()或QDialog::open()。
Qt::DrawerSheet | Dialog表明macOS的小部件是一个抽屉。
Qt::Popup0x00000008 | Window指示小部件是弹出顶层窗口,即它是模态的,但具有适合弹出菜单的窗口系统框架。
Qt::ToolPopup | Dialog 指示小部件是一个工具窗口。工具窗口通常是一个小窗口,其标题栏和装饰比通常的小,通常用于工具按钮的集合。 如果有父窗口,工具窗口将始终保持在其父窗口的顶部。 如果没有父节点,你也可以考虑使用Qt::WindowStaysOnTopHint。如果窗口系统支持它,工具窗口可以用稍轻的框架装饰。 它也可以与Qt:: framamelesswindowhint结合使用。在macOS上,工具窗口对应于窗口的浮动类。这意味着窗口位于ab层
Qt::ToolTipPopup | Sheet 指示小部件是工具提示。这在内部用于实现工具提示。
Qt::SplashScreenToolTip | Dialog 指示窗口是启动画面。这是QSplashScreen的默认类型。
Qt::Desktop0x00000010 | Window 指示此小部件是桌面。这是QDesktopWidget的类型。
Qt::SubWindow0x00000012 指示此小部件是子窗口,例如QMdiSubWindow小部件。
Qt::ForeignWindow0x00000020 | Window 指示此窗口对象是表示由另一个进程或通过使用本机代码手动创建的本机平台窗口的句柄。
Qt::CoverWindow0x00000040 | Window 指示窗口表示覆盖窗口,该窗口在某些平台上最小化应用程序时显示。

使用方式:

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("123Li")
    color: "#0078D7"
    flags: "Dialog"
}    

visibility 表

ConstantValueDescription
QWindow::Windowed 调用方式: visibility: "Windowed" 2 窗口占据屏幕的一部分,但不一定占据整个屏幕。这个状态将只发生在支持同时显示多个窗口的窗口系统上。 在这种状态下用户是否可以手动移动和调整窗口大小,如果WindowFlags允许,如果它是窗口系统支持。
QWindow::Minimized3窗口被简化为任务栏、dock、任务列表或桌面上的一个条目或图标,这取决于窗口系统如何处理最小化的窗口。
QWindow::Maximized4 该窗口占据了整个屏幕,标题栏仍然可见。在大多数窗户上这是通过单击工具栏上的maximize按钮实现的状态。
QWindow::FullScreen5 该窗口占据了整个屏幕,不能调整大小,也没有标题栏。在一些不支持同时显示多个窗口的平台,这可以是通常的可见性窗户并没有被隐藏。
QWindow::AutomaticVisibility1这意味着给窗口一个默认的可见状态,可能是全屏或窗口取决于平台。它可以作为setVisibility但永远不会从可见性访问器。
QWindow::Hidden0 窗户在任何方面都是不可见的,但是它可以记住潜在的可见性通过设置“自动可见性”恢复。这个是值等价于 visible: false

(二)信号和处理器(槽函数)(通用)

参考:【QT】QML中的信号和函数

语法格式 : 一般都是这个形式 on,比如信号是clicked(),那么处理器就是onClicked

如何查看QT自带的信号对应的处理器:
根据文档定位信号:
在这里插入图片描述
使用也比较简单,系统发出信号后直接用处理器处理就好。

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("123Li")
    color: "#0078D7"
    flags: "Dialog"
    //信号处理:当关闭窗口时,qt会发射信号 void closing(CloseEvent close)
	 onClosing: console.log(qsTr("关闭窗口"))
	 //信号处理:
    onClosing: {
         console.log(qsTr("第二种写法,推荐"))
    }
    //信号处理:方式三
    onClosing: {
         close1();
    }
    //调用函数,注意自己的函数名不能跟qt库的名字一样
    function close1(){
       console.log(qsTr("关闭窗口"))
    }
}    

(三)调用函数(通用)

window窗口组件有一下函数。
在这里插入图片描述

一个调用函数的例子:

注意:Button 组件需要导入对应版本的包

import QtQuick.Controls 2.2

如果不知道版本可以搜索一下:
在这里插入图片描述

import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Controls 2.2

Window {
    id: window
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Button {
        x:100  //设置按钮的横坐标
        y:200  //设置纵坐标
        text:"我是按钮"   //按钮标题

        //信号槽连接
        onClicked: {
            console.log("我被点击了")
            //调用window 提供的方法隐藏窗口
            window.hide()
        }
    }

}

(四)变量(通用)

在qml中还能声明变量。具体如下:

import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Controls 2.2

Window {

    property int num: 0
    //创建一个变量,初始值为0
    property int currentMenu: 0
    //创建一个自读的变量
    readonly property var menuWidth: 100

    id: window
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Text {
        //text: 后面跟着的是一个匿名函数
        text: {
            return "初始值: "+"currentMenu="+window.currentMenu+"menuWidth="+window.menuWidth;
        }
    }


    Button {
        y:20  //设置纵坐标
        text:"按钮"   //按钮标题

        //信号槽连接
        onClicked: {
            num++;
            //menuWidth = menuWidth++; 会报错,被readonly 变量被声明后不能修改
            currentMenu=10+currentMenu;
            console.log("toString:"+currentMenu.toString());
            console.log("valueOf:"+currentMenu.valueOf());
        }
    }

    Text {
        y: 80
        text: "num="+window.num
    }

}

(五)Math类使用(通用)

Math 有下列方法:

max(x, y),返回 x 和 y 中的最大值。

min(x, y),返回 x 和 y 中的最小值。

abs(x),返回数的绝对值。

sqrt(x),返回数的平方根。

pow(x, y),返回 x 的 y 次幕。

random(),返回 0〜1 之间的随机数。

sin(x),返回数的正弦值。

asin(x),返回数的反正弦值。

exp(x),返回 e 的指数。

log(x),返回数的自然对数(底为 e)。

valueOf(),返回 Math 对象的原始值。

import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Controls 2.2

Window {

    property int num: 0
    //创建一个变量,初始值为0
    property int currentMenu: 0
    //创建一个自读的变量
    readonly property var menuWidth: 100

    id: window
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Text {
        //text: 后面跟着的是一个匿名函数
        text: {
            return "初始值: "+"currentMenu="+window.currentMenu+"menuWidth="+window.menuWidth;
        }
    }


    Button {
        y:20  //设置纵坐标
        text:"按钮"   //按钮标题

        //信号槽连接
        onClicked: {
            num++;
            //menuWidth = menuWidth++; 会报错,被readonly 变量被声明后不能修改
            currentMenu=10+currentMenu;
            console.log("toString:"+currentMenu.toString());
            console.log("valueOf:"+currentMenu.valueOf());
        }
    }

    Text {
        y: 80
        text: "num="+window.num
    }


    Text{
        id: result
        y: 100
    }
    Rectangle{
        width: 80
        height: 20
        y: 120
        color: "#F0F0F0"
        TextEdit{
            id: mathText
            width: 80
            height: 20
            color: "#BCBEBF"
            onEditingFinished: {
                console.log("输入的内容为:"+mathText.text)
            }
        }
    }

    Button {
        y:180  //设置纵坐标
        text:"按钮"   //按钮标题

        //信号槽连接
        onClicked: {
            var tpye = mathText.getText(0,10);
            console.log(tpye)
            if(tpye==="max"){
                result.text = Math.max(10,11);
            }
           switch(tpye){
           case "min":
               result.text = Math.mix(10,11);
               break;
           case "abs":
               result.text = Math.abs(-1);
               break;
           case "random":
               result.text = Math.random(10);
               break;
           }
        }
    }

}

二、更多属性介绍

(一)分组属性

font属性的类型本身是一个对象,这个对象又有pixelSize,bold, italic、underline等属性。对于类型为对象的属性值,可以使用“.”操作符展开对象的每一个成员对其赋值,也可以通过分组符号(一对花括号)把要赋值的成员放在一起给它们赋值。对于后者,其形式就和对象的定义一样了,起码看起来没有区别。所以,又可以这么理解上面的示例:Text对象内聚合了font对象。OK,就是聚合。来自《Qt Quick核心编程》

Text {
 	y: 80
    text: "hello"
    //对于font就是分组属性,它是一个对象,里面有许多属性,写法一
    font.family: "黑体"
    font.bold: true
    //写法二
    font {pointSize: 20; underline: true}
}

三、QML对象树

先看例子:

import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Controls 2.2

Window {
    property int num: 0
    //创建一个变量,初始值为0
    property int currentMenu: 0
    //创建一个自读的变量
    readonly property var menuWidth: 100

    id: window
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    //函数,注意自己的函数名不能跟qt库的名字一样
    function printf(){
       console.log(qsTr("hello"))
    }


    Text {
        id: text1
        text: "text1"
    }

    Button {
    	id: btn
        y:20  
        text:"按钮"   //按钮标题

        //发出点击事件信号后、处理器处理逻辑(槽函数)
        onClicked: {
     		console.log("点击了按钮。");
     		//调用别人的方法
     		window.printf();
        }
    }
}

对于上面的例子,整个Window{}就是一个对象树,Window是对象树的根,Window有两个孩子,id分别为text1和btn。在对象树中,对象之间通过id相互调用别人的属性和方法。

四、Qt Quick App启动方式

  • QQmlApplicationEngine搭配Window。
  • QQuickView搭配Item。

两者的不同之处在于:使用OOuickView 显示OML文档,对窗口的控制权(比如设置窗口标题、Icon、窗口的最小尺寸等)在C++代码:而使用OOmIApplicationEngine加载以Window为根对象的QML文档,QML文档则拥有窗口的完整控制权,可以直接设置标题、窗口尺寸等属性。

五、ltem组件

是不是在查看文档时发现很多组件的许多属性都没有介绍,因为ltem是 Qt Quick中所有可视元素的基类,虽然它自己什么也不绘制,但是它定义了绘制图元所需要的大部分通用属性,比如x、y、width、height、锚定(( anchoring)和按键处理。因此对于一些通用属性,一些组件的文档不会重复介绍。

(一)属性表

官方文档提供了以下属性通用,有一些在window窗口已经遇到过。
在这里插入图片描述
如果下载了qt,找到qt安装目录下的:你的安装目录/Docs/Qt-5.9.3/qtquick/qml-qtquick-item.html双击打开查看

属性表

属性介绍
x确定组件的位置,x轴。桌面左上角为0
y确定组件的位置,y轴。桌面左上角为0
z确定组件的堆叠顺序,值越大越在顶层。(堆叠值较高的物品被绘制在堆叠顺序较低的兄弟物品之上。具有相同堆叠值的项目按照它们出现的顺序从下往上绘制。堆叠值为负的项目被绘制在其父内容下)
focus能否获取输入焦点,比如:TextInput组件,如果focus 不等于true,那么用户无法获取输入焦点,也就无法输入。搭配FocusScope组件使用,默认为flase
activeFocusOnTab默认为false, 这个属性为ture才可以通过tap键,快速切换到下一个输入框
activeFocus只读属性,不能设置值。指定元素是否获得焦点,如果获得了焦点,那么为true
anchors这是一个分组属性。能更改组件的定位。具体如:anchors表

anchors表

anchors ( 瞄点)分组属性介绍

anchors.top : AnchorLine
anchors.bottom : AnchorLine
anchors.left : AnchorLine
anchors.right : AnchorLine
anchors.horizontalCenter : AnchorLine
anchors.verticalCenter : AnchorLine
anchors.baseline : AnchorLine
anchors.fill : Item
anchors.centerIn : Item
anchors.margins : real
anchors.topMargin : real
anchors.bottomMargin : real
anchors.leftMargin : real
anchors.rightMargin : real
anchors.horizontalCenterOffset : real
anchors.verticalCenterOffset : real
anchors.baselineOffset : real
anchors.alignWhenCentered : bool

- focus 、activeFocusOnTab、activeFocus 使用例子如下:

import QtQuick 2.6
import QtQuick.Window 2.2

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Item{
        id: item
        x: 100
        y: 10
        //与html的index一样,数值越大,越位于最上面
        z: 1
        width: 100
        height: 100
        Rectangle {
            id: rectangle
            width: 100; height: 150
            color: "#4B92F1"
            FocusScope {
                id: focusScope
                focus: true
                TextInput {
                    id: input1
                    y:10
                    width: rectangle.width
                    //能否获取输入焦点
                    focus: true
                    //这个属性为ture才可以通过tap键,快速切换到下一个输入框
                    activeFocusOnTab: true
                    text: "1"
                }

                TextInput {
                    id: input2
                    y:40
                    width: rectangle.width
                    focus: true
                    //activeFocusOnTab:true
                    text: "2"
                }

                TextInput {
                    id: input3
                    y:70
                    width: rectangle.width
                    focus: true
                    activeFocusOnTab:true
                    text: "3"
                }
            }
        }

        Text {
            id: text
            y: 90
            //是否获得焦点,如果input1获得焦点,那么为true
            text: input1.activeFocus
        }

    }
}

瞄点的介绍

图片来自《Qt Quick核心编程》
在这里插入图片描述
注意:topMargin 、bottomMargin、leftMargin、rightMargin。需要跟top 、bottom、left、right一 一对应使用。
比如:使用了left定位组件,那么想要修改边距,那么只能通过leftMargin修改左边距,不能通过rightMargin修改右边距

六、FileDialog

FileDialog 是一个弹窗组件,父类为Dialog。在使用FileDialog 时需要先去了解Dialog组件有哪些属性、函数、信号。

一些属性

  1. nameFilter :nameFilter 根据文件后缀名筛选文件。
  2. title:设置文件弹出框的名字

信号处理器

onAccepted: {
console.log("选择:"+fileDialog.fileUrl);
}
//取消选择
onRejected: {
     console.log("取消:");
}

实例

声明FileDialog组件后,组件不会显示出来,因为它是一个Dialog(弹框组件)类型。需要配合其他组件使用,最常见的是按钮。调用open() 这个函数后会显示出来。

Button {
     width: 100
     height: 50
     id: but2
     text: "选择文件"
     style: butStyle
     onClicked: {
     	//打开弹框
         fileDialog.open()
     }
}
FileDialog {
    id: fileDialog
    nameFilters: ["Text files (*.txt)", "HTML files (*.html *.htm)"]
    title: "选择文件"
    //选择文件
    onAccepted: {
    	//获取选择的文件路径
        console.log("选择:"+fileDialog.fileUrl);
    }
    //取消选择
    onRejected: {
         console.log("取消:");
    }
}

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

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

相关文章

MapReduce Partition 分区

MapReduce Partition 分区 MapReduce输出结果个数研究 在默认情况下 不管Map阶段有多少个并发执行的task,到Reduce阶段,所有结果都将有一个task来进行处理,并且最终结果将输出到一个文件中,part-r-0000。 可以进行手动的设置re…

微信小程序图书商城毕业设计,图书商城购物小程序系统设计与实现,图书商城购物小程序商城毕设作品参考

功能清单 【后台管理员功能】 会员列表:查看所有注册会员信息,支持删除 录入资讯:录入资讯标题、内容等信息 管理资讯:查看已录入资讯列表,支持删除和修改 广告设置:上传图片和设置小程序首页轮播图广告地…

相机拍照不清晰怎么回事?不清晰地照片还能修复高清吗?

现在有很多的人都非常的喜欢拍照,主要就是因为喜欢记录,抓住我们身边的美,但是拍照的话就要使用相机,那么像相机电子产品我们在平常的时候是使用不到的,只有在有需求的时候可以使用的,而且也是有需求的人才…

Spring Security(6)

您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~ Spring Security使用MySQL保存cookie记录虽然方便,但是目前更多的主流互联网应用都是用NoSQL来保存非业务数据的,Spring Security也应该可…

案例分享|生产环境MQ集群一个非常诡异的消费延迟排查

1、问题现象 某一天,项目组一个同事向我反馈,他们使用公司的数据同步产品将MySQL数据同步到MQ集群,然后使用消费者将数据再同步到ES,反馈数据同步延迟严重,但对应的消费组确没有积压,但最近最近几分钟的数…

LinkedIn领英开发客户方法大全(篇二)

profile完善步骤详细说明 详细步骤: 如下图箭头所示步骤,点击“view my profile”: 进入你的档案资料界面: 1)点击红色圆圈所示处,即进入Edit intro界面: 即编辑个人简介,包括: …

企业如何通过推特群推创造商机

尤其是小企业要足够重视Twitter在营销推广上的重要性。因此,你有必要精心设计Twitter主页,并付诸投入和努力,这样就会看到消费者数量的增长,以及品牌忠诚度的提升。无疑,在Twitter上,很多企业可以发现商机&…

HTML基础-表单标签,button按钮,select下拉菜单

HTML基础-表单标签 目标和学习路径 1.表单标签 1.1 input系列标签的基本介绍 1.2 input系列标签-文本框 (拓展)value属性和name属性作用介 1.3 input系列标签-密码框 1.4 input系列标签-单选框 1.5 input系列标签-复选框 1.6 input系列标签-文件选择 2.button按钮标签 1.7 inpu…

JVS无忧·企业计划2.1.6更新说明

无忧企业计划是JVS企业数字化全家桶中重要组成部分,主要用于项目管理、任务管理、进度跟踪、过程管理等场景。 任务管理是企业内部事务协同的重要工具,与传统的OA有类似之处,同样是推动企业内部事务有效快速的执行,但之前存在不同…

直流无刷电机(BLDC)转速闭环调速系统及Matlab/Simulink仿真分析(二)

文章目录前言一、转速闭环直流调速系统二、Matlab/Simulink仿真2.1.仿真电路分析2.2.仿真结果分析总结前言 变压调速是直流调速系统的主要调速方法,因此系统的硬件至少包含:可调直流电源和直流电机两部分。可调直流电源多采用直流PWM变换器,…

CMMI2.0之我见-过程质量保证PQA

编者按: CMMI2.0之我见系列将通过系列文章形式介绍CMMI2.0所涉及到的其中20个实践域,笔者将通过系统性的梳理、浅显易懂的文字描述,同时结合笔者的思考和观点,对每个实践域的目标以及所基本涵盖的内容进行描述,希望能…

CSS 的快乐:画一个可爱的三只小鸟 Button

做为前端工程师,最大的快乐之一就是可以用 CSS 画出各种有趣的效果。 比如我最近画的一个 Button: 画的过程中确实很开心,这也是我当时选择做前端的很大一部分原因。 今天我们就一起来画下这个可爱的 Button 吧!纯 CSS&#xff…

Kamiya丨Kamiya艾美捷小鼠血清淀粉样蛋白A ELISA说明书

Kamiya艾美捷小鼠血清淀粉样蛋白A ELISA预期用途: 小鼠血清淀粉样蛋白A ELISA是一种高灵敏度的双位点酶联免疫分析(ELISA)小鼠生物样品中血清淀粉样蛋白A(SAA)的定量测定。仅供研究使用。 引言 铜蓝蛋白是参与铜转运…

Go学习之路:更多类型:struct、slice 和映射(DAY 2)

文章目录前引更多类型:struct、slice 和映射1、指针2.1、结构体/结构体命名(一)2.2、结构体/对象访问、指针访问、初始化规则(二)3、数组4.1、切片/初始化切片4.2、切片/切片引用数组4.3、切片/切片的length和capacity…

React Context源码是怎么实现的呢

目前来看 Context 是一个非常强大但是很多时候不会直接使用的 api。大多数项目不会直接使用 createContext 然后向下面传递数据&#xff0c;而是采用第三方库&#xff08;react-redux&#xff09;。 想想项目中是不是经常会用到 connect(...)(Comp) 以及 <Provider value{s…

非互联网客户收入近6成,阿里云进入新周期

近日&#xff0c;阿里巴巴发布了截至2022年9月30日止季度&#xff08;2023财年第二季度&#xff0c;阿里财年从每年4月1日至第二年3月31日&#xff09;业绩。 在除去阿里内部使用的额度&#xff0c;抵销跨分部交易后&#xff0c;阿里云业务分部&#xff08;包括阿里云和钉钉&am…

【web前端期末大作业】基于html+css+javascript+jquery技术设计的音乐网站(44页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

【华为上机真题 2022】字符串加密

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

【Linux】基本指令(三)

文章目录sort 指令find 指令which 指令alias 指令grep 指令top 指令zip/unzip指令tar 指令bc 指令unname 指令history 指令shutdown 指令热键补充sort 指令 &#x1f495; Linux sort 命令用于将文本文件内容加以排序并且可针对文本文件的内容&#xff0c;以行为单位来排序。 …

03 探究Kubernetes工作机制的奥秘

自动化的运维管理&#xff1a;探究Kubernetes工作机制的奥秘 文章目录1. 云计算时代的操作系统2. kubernets 的基本架构3.节点内部的结构3.1 master 节点3.2 node 节点4. Kubernetes 的大致工作流程5.插件有哪些&#xff1f;5.1 重要的插件6. kubernetes 架构思维导图7. 思考的…