Qt基础类05-尺寸类QSize
Qt基础类05-尺寸类QSize
- 摘要
- 基本信息
- 写在前面
- 重要成员函数举例7个
- QSize QSize::boundedTo(const QSize &otherSize) const
- QSize QSize::expandedTo(const QSize &otherSize) const
- bool QSize::isEmpty() const
- bool QSize::isNull() const
- bool QSize::isValid() const
- QSize QSize::scaled(const QSize &s, Qt::AspectRatioMode mode) const
- QSize QSize::transposed() const
- 技巧
- 写在后面
- 系列博文
摘要
1.本文测试验证了QT5中的QSize尺寸类的各成员函数和属性
2.本文适用于学习QT的新手入门及练习,老手请绕路。
3.工程上传至CSDN,供同一时期学习QT的网友参考,可自行查看。
4.转载请注明出处
基本信息
时间:2024.09.13
QT版本:5.14.2
平台:window 10
程序简介:
-
本工程是Qt基础类和基本数据类型专题例程,QSize尺寸类
-
本工程对照着Qt的帮助文档,把每个属性和成员函数测试了一遍
写在前面
这个练习程序,是对照着QT中QSize的帮助文档,一个一个测试形成的。
QSize尺寸类,它主要包含的是宽度和高度,这使其在构造一个矩形,设置窗体的尺寸等等场景下,有较为广泛的应用。
但要注意,QSize和QRect的区别,一个是尺寸类,一个是矩形类。它们不是一个东西,但创建一个矩形对象时,如果它是一个有效的对象,它就一定包含宽度和高度,所以,QSize和QRect又是密切相关的。
本文链接地址 Qt基础类05-尺寸类QSize-CSDN博客,转载请注明出处。
QSize尺寸类,除了提供对宽度和高度的访问及设置外,还提供了缩放、交换宽度和高度,以及操作符重载等相关函数,如heigth(),width(),setHeigth(),setWidth(),scale(),transpose()等等函数。详见下文。
本测试程序,toCGSize()函数没有进行测试。
本测试程序,可流化的2个函数没有进行测试。
重要成员函数举例7个
工程上传至CSDN,供同一时期学习QT的网友参考,可自行查看。
这里,最基本的获取宽度,width()和heigth(),setWidth()和setHeigth()等一眼看上去就知道怎么回事儿的就不再详细介绍、不再贴代码了,只贴测试后的图片。
这里仅把新手小白可能值得一看的内容贴出来。
本测试程序全貌如下图:

QSize QSize::boundedTo(const QSize &otherSize) const
作用:返回一个包含此尺寸和给定otherSize的最小宽度和高度的尺寸。
这话说的,云时雾里的,看英文原文,如下:
Returns a size holding the minimum width and height of this size and the given otherSize.
这里理解的不好,返回的是一个QSize对象,在这个QSize对象,和另外一个指定的QSize对象中,取宽度和高度的最小值,返回来。
如果按此理解,测试程序得重写一下啊~!
QPainter painter(this);QSize size1(100,50);QPoint topleftPoint1(400,200);QRect rect1(topleftPoint1,size1);painter.setPen(Qt::blue);painter.drawRect(rect1);QSize size2;size2=size2.boundedTo(size1);QPoint topleftPoint2(650,200);QRect rect2(topleftPoint2,size2);painter.setPen(Qt::red);painter.drawRect(rect2);label1->setText(tr("rect1使用size1进行构造,其宽度为:%1,高度为:%2").arg(size1.width()).arg(size1.height()));label2->setText(tr("rect2使用size2=size2.boundedTo(size1),其宽度为:%1,高度为:%2").arg(size2.width()).arg(size2.height()));
程序运行效果如下:

QSize QSize::expandedTo(const QSize &otherSize) const
作用:返回一个包含此尺寸和给定otherSize的最大宽度和高度的尺寸。
英文原文:
Returns a size holding the maximum width and height of this size and the given otherSize.
与上个函数成对儿配套来理解~!
QPainter painter(this);QSize size1(100,50);QPoint topleftPoint1(400,200);QRect rect1(topleftPoint1,size1);painter.setPen(Qt::blue);painter.drawRect(rect1);QSize size2;size2=size2.expandedTo(size1);QPoint topleftPoint2(650,200);QRect rect2(topleftPoint2,size2);painter.setPen(Qt::red);painter.drawRect(rect2);label1->setText(tr("rect1使用size1进行构造,其宽度为:%1,高度为:%2").arg(size1.width()).arg(size1.height()));label2->setText(tr("rect2使用size2=size2.expandedTo(size1),其宽度为:%1,高度为:%2").arg(size2.width()).arg(size2.height()));
程序运行效果如下:

bool QSize::isEmpty() const
作用:如果宽度和高度中的任何一个小于等于0,则返回true;否则返回false。
这里的Empty不用管它是的“空”,翻译如何理解,想象一下,宽*高所构成的面积,只要面积为0,它就是“空”啦~!
尺寸就没有负值的概念,不说宽度为负5,高度为负6之类的,负值全部无效。
QPainter painter(this);QSize size1(100,50);QSize size2(0,40);QSize size3(60,0);QSize size4(0,0);QPoint topleftPoint1(400,200);QPoint topleftPoint2(650,200);QPoint topleftPoint3(400,300);QPoint topleftPoint4(650,300);QRect rect1(topleftPoint1,size1);QRect rect2(topleftPoint2,size2);QRect rect3(topleftPoint3,size3);QRect rect4(topleftPoint4,size4);painter.setPen(Qt::blue);painter.drawRect(rect1);painter.setPen(Qt::red);painter.drawRect(rect2);painter.setPen(Qt::green);painter.drawRect(rect3);painter.setPen(Qt::darkYellow);painter.drawRect(rect4);bool result1=size1.isEmpty();bool result2=size2.isEmpty();bool result3=size3.isEmpty();bool result4=size4.isEmpty();label1->setText(tr("rect1使用size1进行构造,其宽度为:%1,其高度为:%2").arg(size1.width()).arg(size1.height()));label2->setText(tr("rect2使用size2进行构造,其宽度为:%1,其高度为:%2").arg(size2.width()).arg(size2.height()));label3->setText(tr("rect3使用size3进行构造,其宽度为:%1,其高度为:%2").arg(size3.width()).arg(size3.height()));label4->setText(tr("rect4使用size4进行构造,其宽度为:%1,其高度为:%2").arg(size4.width()).arg(size4.height()));label5->setText(tr("size1宽和高均不为0,size1.isEmpty()的结果是:%1").arg(result1>0?"true":"false"));label6->setText(tr("size2的宽为0,size2.isEmpty()的结果是:%1").arg(result2>0?"true":"false"));label7->setText(tr("size3的高为0,size3.isEmpty()的结果是:%1").arg(result3>0?"true":"false"));label8->setText(tr("size4的宽和高均为0,size4.isEmpty()的结果是:%1").arg(result4>0?"true":"false"));
程序运行效果如下:

bool QSize::isNull() const
作用:如果宽度和高度都为0,则返回true;否则返回false。
注意这里,Null是宽和高都同时为0,才为true。宽和高有一个不为0,都不能称为Null,都是false.
QPainter painter(this);QSize size1(100,50);QSize size2(0,40);QSize size3(60,0);QSize size4(0,0);QPoint topleftPoint1(400,200);QPoint topleftPoint2(650,200);QPoint topleftPoint3(400,300);QPoint topleftPoint4(650,300);QRect rect1(topleftPoint1,size1);QRect rect2(topleftPoint2,size2);QRect rect3(topleftPoint3,size3);QRect rect4(topleftPoint4,size4);painter.setPen(Qt::blue);painter.drawRect(rect1);painter.setPen(Qt::red);painter.drawRect(rect2);painter.setPen(Qt::green);painter.drawRect(rect3);painter.setPen(Qt::darkYellow);painter.drawRect(rect4);bool result1=size1.isNull();bool result2=size2.isNull();bool result3=size3.isNull();bool result4=size4.isNull();label1->setText(tr("rect1使用size1进行构造,其宽度为:%1,其高度为:%2").arg(size1.width()).arg(size1.height()));label2->setText(tr("rect2使用size2进行构造,其宽度为:%1,其高度为:%2").arg(size2.width()).arg(size2.height()));label3->setText(tr("rect3使用size3进行构造,其宽度为:%1,其高度为:%2").arg(size3.width()).arg(size3.height()));label4->setText(tr("rect4使用size4进行构造,其宽度为:%1,其高度为:%2").arg(size4.width()).arg(size4.height()));label5->setText(tr("size1宽和高均不为0,size1.isNull()的结果是:%1").arg(result1>0?"true":"false"));label6->setText(tr("size2的宽为0,size2.isNull()的结果是:%1").arg(result2>0?"true":"false"));label7->setText(tr("size3的高为0,size3.isNull()的结果是:%1").arg(result3>0?"true":"false"));label8->setText(tr("size4的宽和高均为0,size4.isNull()的结果是:%1").arg(result4>0?"true":"false"));
程序运行效果如下:

bool QSize::isValid() const
作用:如果宽度和高度都等于或大于0,则返回true;否则返回false。
重要:0和正值都是true,负值为false。对应于现实世界中的宽和高,它们一定是正整数。
QPainter painter(this);QSize size1(100,50);QSize size2(0,20);QSize size3(60,0);QSize size4(0,0);QSize size5(-50,10);QSize size6(10,-50);QSize size7(-50,-50);QPoint topleftPoint1(400,130);QPoint topleftPoint2(400,200);QPoint topleftPoint3(500,200);QPoint topleftPoint4(600,200);QPoint topleftPoint5(400,350);QPoint topleftPoint6(500,350);QPoint topleftPoint7(600,350);QRect rect1(topleftPoint1,size1);QRect rect2(topleftPoint2,size2);QRect rect3(topleftPoint3,size3);QRect rect4(topleftPoint4,size4);QRect rect5(topleftPoint5,size5);QRect rect6(topleftPoint6,size6);QRect rect7(topleftPoint7,size7);painter.setPen(Qt::blue);painter.drawRect(rect1);painter.setPen(Qt::red);painter.drawRect(rect2);painter.setPen(Qt::green);painter.drawRect(rect3);painter.setPen(Qt::darkYellow);painter.drawRect(rect4);painter.setPen(Qt::darkRed);painter.drawRect(rect5);painter.setPen(Qt::darkCyan);painter.drawRect(rect6);painter.setPen(Qt::darkMagenta);painter.drawRect(rect7);bool result1=size1.isValid();bool result2=size2.isValid();bool result3=size3.isValid();bool result4=size4.isValid();bool result5=size5.isValid();bool result6=size6.isValid();bool result7=size7.isValid();label1->setText(tr("rect1使用size1进行构造,其宽度为:%1,其高度为:%2").arg(size1.width()).arg(size1.height()));label2->setText(tr("rect2使用size2进行构造,其宽度为:%1,其高度为:%2").arg(size2.width()).arg(size2.height()));label3->setText(tr("rect3使用size3进行构造,其宽度为:%1,其高度为:%2").arg(size3.width()).arg(size3.height()));label4->setText(tr("rect4使用size4进行构造,其宽度为:%1,其高度为:%2").arg(size4.width()).arg(size4.height()));label5->setText(tr("size1宽和高均不为0,size1.isValid()的结果是:%1").arg(result1>0?"true":"false"));label6->setText(tr("size2的宽为0,size2.isValid()的结果是:%1").arg(result2>0?"true":"false"));label7->setText(tr("size3的高为0,size3.isValid()的结果是:%1").arg(result3>0?"true":"false"));label8->setText(tr("size4的宽和高均为0,size4.isValid()的结果是:%1").arg(result4>0?"true":"false"));label9->setText(tr("size5的宽为-50,size5.isValid()的结果是:%1").arg(result5>0?"true":"false"));label10->setText(tr("size6的高为-50,size6.isValid()的结果是:%1").arg(result6>0?"true":"false"));label11->setText(tr("size7的宽和高均为-50,size7.isValid()的结果是:%1").arg(result7>0?"true":"false"));
程序运行效果如下:

QSize QSize::scaled(const QSize &s, Qt::AspectRatioMode mode) const
作用:根据指定的模式,返回缩放为给定尺寸s的矩形的大小。
重要:这里&s是一个给定的尺寸,缩放之后的尺寸到底是多大,要看Qt::AspectRatioMode的设置如何,是否保持宽高比。这个按图形来理解就容易多了。
QPainter painter(this);QSize size1(10,12);QSize size2(10,12);QSize size3(10,12);QPoint topleftPoint1(400,200);QPoint topleftPoint2(500,200);QPoint topleftPoint3(600,200);QRect rect1(topleftPoint1,size1);QRect rect2(topleftPoint2,size2);QRect rect3(topleftPoint3,size3);painter.setPen(Qt::blue);painter.drawRect(rect1);painter.drawRect(rect2);painter.drawRect(rect3);label1->setText(tr("rect1使用size1进行构造,其宽度为:%1,高度为:%2").arg(size1.width()).arg(size1.height()));label2->setText(tr("rect2使用size2进行构造,其宽度为:%1,高度为:%2").arg(size2.width()).arg(size2.height()));label3->setText(tr("rect3使用size3进行构造,其宽度为:%1,高度为:%2").arg(size3.width()).arg(size3.height()));QSize sizeRef(60,60);QSize size4=size1.scaled(sizeRef,Qt::IgnoreAspectRatio);QSize size5=size2.scaled(sizeRef,Qt::KeepAspectRatio);QSize size6=size3.scaled(sizeRef,Qt::KeepAspectRatioByExpanding);QPoint topleftPoint4(400,300);QPoint topleftPoint5(500,300);QPoint topleftPoint6(600,300);QRect rect4(topleftPoint4,size4);QRect rect5(topleftPoint5,size5);QRect rect6(topleftPoint6,size6);painter.setPen(Qt::red);painter.drawRect(rect4);painter.drawRect(rect5);painter.drawRect(rect6);label4->setText(tr("QSize sizeRef(60,60);"));label5->setText(tr("QSize size4=size1.scaled(sizeRef,Qt::IgnoreAspectRatio);"));label6->setText(tr("QSize size5=size2.scaled(sizeRef,Qt::KeepAspectRatio);"));label7->setText(tr("QSize size6=size3.scaled(sizeRef,Qt::KeepAspectRatioByExpanding);"));label8->setText(tr("rect4使用size1.scale()进行构造,其宽度为:%1,高度为:%2").arg(size4.width()).arg(size4.height()));label9->setText(tr("rect5使用size2.scale()进行构造,其宽度为:%1,高度为:%2").arg(size5.width()).arg(size5.height()));label10->setText(tr("rect6使用size3.scale()进行构造,其宽度为:%1,高度为:%2").arg(size6.width()).arg(size6.height()));
程序运行效果如下:

QSize QSize::transposed() const
作用:交换宽度和高度值。
区别:这里注意与transpose()的区别,主要看返回值。
transposed()返回的是QSize对象,而transpose()返回值是void。
QPainter painter(this);QSize size1(100,50);QPoint topleftPoint1(400,200);QRect rect1(topleftPoint1,size1);painter.setPen(Qt::blue);painter.drawRect(rect1);label1->setText(tr("rect1使用size1进行构造,其宽度为:%1,高度为:%2").arg(size1.width()).arg(size1.height()));QSize size2=size1.transposed();QPoint topleftPoint2(600,200);QRect rect2(topleftPoint2,size2);painter.setPen(Qt::red);painter.drawRect(rect2);label2->setText(tr("rect2使用QSize size2=size1.transposed()构造,其宽度为:%1,高度为:%2").arg(size1.width()).arg(size1.height()));
程序运行效果如下:

技巧
-
在这个测试程序中,尝试设置了一下QLabel的颜色。但也发现,设置QTextEdit和设置QPushButton中字体的颜色是不一样的。脑海中盘旋着,这一个一个设置好麻烦啊~!是否有全局的方法来一起设置?先保留疑问,回头blog中见。
-
在我笔记本电脑2k的分辨下,调整1920**1080,然后去截取应用程序的截图,画的直线、矩形等,位置信息好像还是不太对。在2台电脑来回切换进行开发时,还是有一点儿小麻烦。
写在后面
-
关于QSize类,其中有isEmpty(),isNull(),isValid(),这3个函数。应注意它们3个的区别。详见上文。
-
QTextEdit对象,当内容行数过多时,会自动产生垂直滚动条,滚动条的默认位置在最末尾,如何设置滚动条默认在最前端,还没有去尝试。
-
下边是scale()函数会用到的,宽高比的设置选项Qt::AspectRatioMode,如下:
| 序号 | 内容 | 含义 |
|---|---|---|
| 1 | Qt::IgnoreAspectRatio | 大小设置为(width, height),忽略长宽比 |
| 2 | Qt::KeepAspectRatio | 保持长宽比,大小被缩放到一个矩形尽可能大的内部(宽度,高度) |
| 3 | Qt:: keepaspectratiobyexpansion | 保持长宽比,大小被缩放到一个矩形尽可能小的外部(宽度,高度) |
系列博文
Qt基础类01–坐标类QPoint-CSDN博客
Qt基础类02-坐标类QPointF-CSDN博客
Qt基础类03-直线类QLine-CSDN博客
Qt基础类04-浮点直线类QLineF-CSDN博客
Qt基础类05-尺寸类QSize-CSDN博客
相关文章:
Qt基础类05-尺寸类QSize
Qt基础类05-尺寸类QSize 摘要基本信息写在前面重要成员函数举例7个QSize QSize::boundedTo(const QSize &otherSize) constQSize QSize::expandedTo(const QSize &otherSize) constbool QSize::isEmpty() constbool QSize::isNull() constbool QSize::isValid() constQ…...
Vue 2中的this指向详解
在JavaScript中,this的指向是许多开发者经常遇到的问题,尤其是在使用Vue这样的框架时。在Vue 2中,理解this的指向对于正确地访问组件的数据和方法至关重要。 1. this在Vue组件中的指向 在Vue组件的选项中,this通常指向当前组件实…...
长业务事务的离线并发问题
事务指代一组操作同时成功或同时失败,事务可分为两类: 系统事务:即关系数据库事务,一次数据库连接中由start transaction或begin开启,commit表示提交,rollback表示回滚;业务事务:完…...
黑马程序员Java笔记整理(day01)
1.windowsR进入运行,输入cmd 2.环境变量 3.编写java第一步 4.使用idea 5.注释 6.字面量 7.变量 8.二进制 9.数据类型 10.关键词与标识符...
VMware Tools系列一:安装VMware Tools的作用
最近笔者安装了VMware Workstation pro 17,同时在VMware中安装了华为的Open Euler服务器,由于虚拟机Open Euler经常需要与宿主机win10交换数据,很不方便,而安装VMware Workstation pro 17并没有自动安装了VMware Tools ࿰…...
使用大语言模型(LLM)修正小段乱码(Mojibake)为正常文本
Python方案 在上一篇文章ftfy:修正小段乱码(Mojibake)为正常文本的Python库中,我介绍了ftfy这个库。但随着持续的开发,我发现它仍然有一些解决不了的转换。如下: >>> ftfy.fix_text(‡›‘…...
C++ 访问限定符
个人主页:Jason_from_China-CSDN博客 所属栏目:C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目:C知识点的补充_Jason_from_China的博客-CSDN博客 概念概述 C一种实现封装的方式,用类将对象的属性与方法结合在一块…...
几种mfc140u.dll常见错误情况,以及mfc140u.dll文件修复的方法
如果你遇到与mfc140u.dll 文件相关的错误,这通常指的是该mfc140u.dll文件可能丢失、损坏或与您的应用程序不兼容。详细分析关于mfc140u.dll文件错误会对系统有什么影响,mfc140u.dll文件处于什么样的位置?以下是几种常见的错误情况及其修复方法…...
[产品管理-21]:NPDP新产品开发 - 19 - 产品设计与开发工具 - 详细设计与规格定义
目录 前言: 一、详细设计与规格定义概述 1、产品详细设计 2、规格定义 3、详细设计与规格定义的关系 4、实际应用中的注意事项 二、详细设计与规格定义主要工具 2.1 质量功能展开QFD - 需求跟踪矩阵 1、QFD的基本原理 2、QFD的实施步骤 3、QFD的优势与应…...
powershell@文件大小排序@文件夹磁盘占用分析
文章目录 abstractpowershell对于列出子目录大小的支持状况按文件大小排序指定目录下所有文件 扩展的专用函数介绍统计目录或文件的大小👺对指定目录以友好的格式列出所有文件和子目录的大小函数灵活性说明👺 综合用例其他相关软件易用系列 abstract 在…...
详解c++多态---上
virtual关键字 1.可以修饰原函数,为了完成虚函数的重写,满足多态的条件之一。 class Person { public:virtual void BuyTicket() { cout << "买票-全价" << endl; } };class Student : public Person { public:virtual void Buy…...
emWin5的图片半透明之旅
文章目录 目标过程直接使用png (失败了)通过 BmpCvt.exe 转换一下(成功了)通过bmp转 (半成功吧) 补充工程结构整理 目标 显示半透明效果,类似png那种,能透过去,看到背景。 过程 直接使用png …...
【RabbitMQ 项目】项目概述
项目概述 一.角色划分二.服务器模块概述1.本地模块2.网络模块3.服务器模块 三.模块详细划分1.服务端2.客户端 一.角色划分 该项目的模型是一个跨主机的生产消费模型,有三种角色:生产者,消费者,中间人。对应就要实现三个大模块&…...
【VSCode】VSCode Background 背景插件辅助窗口程序
前排贴上Github项目链接 GitHub窗口项目链接 这是一个基于VSCode上由shalldie上传的background扩展制作的windows窗口程序。 该程序旨在通过窗口程序尽可能的完善该扩展原有的功能。 background - shalldie 的最大优势是我目前仅在其扩展上发现了UseFront的选项,这…...
gdb 前端:kdbg 安装使用
文章目录 1. 前言2. kdbg 安装使用2.1 安装 kdbg2.2 使用 kdbg 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. kdbg 安装使用 2.1 安装 kdbg kdbg 是 gdb 的图形化界面的前端,在 …...
UDP_SOCKET编程实现
文章目录 socket编程接口认识struct sockaddr类 编写一个server服务Client代码查看启动结果代码修正1.获取内核分配给客户端的信息2.修正不匹配ip不能访问的问题 不同机器之间的通信利用xftp将udp_client传给wsl的ubuntu机器进行演示现在模拟在windows下的udp_client代码: 对方…...
【网络】高级IO——阻塞IO和非阻塞IO的实现
目录 一.文件描述符的默认行为——阻塞IO 二.非阻塞IO 2.1.在打开文件或创建套接字时设置非阻塞模式: 2.2.在使用网络I/O接口时请求非阻塞行为: 2.3.fcntl函数 一.文件描述符的默认行为——阻塞IO 在Linux系统中,无论是通过open系统调用…...
ASPICE培训:打造卓越的汽车软件开发能力
随着汽车行业的快速发展和智能化技术的不断演进,汽车软件开发已成为汽车制造过程中不可或缺的一部分。为了确保汽车软件的质量、可靠性和安全性,ASPICE(Automotive SPICE)作为一种国际公认的汽车软件开发过程评估标准,…...
基于Python的人工智能应用案例系列(2):分类
在本篇文章中,我们将探讨分类问题,具体的应用场景是贷款审批预测。通过该案例,我们将学习如何使用Python处理分类问题,训练模型并预测贷款是否会被批准。 案例背景 该数据集包含贷款申请的相关信息,目标是预测贷款是否…...
演示:基于WPF自绘的中国省份、城市、区县矢量地图
一、目的:演示一个基于WPF自绘的中国省份、城市、区县矢量地图 二、效果 国 省 市 三、功能 支持实际经纬度显示 支持平移,缩放等功能 显示中国地图 显示各个省份地图 显示各个省份地图(包含在表格中,包含缩率图) 显…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
