Qt 5.15.2 三維顯示功能

Qt 5.15.2 三維顯示功能

三維顯示效果:
在這里插入圖片描述

.pro項目文件

QT       += core gui opengl 3dcore 3drender 3dinput 3dextrasgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++17# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0SOURCES += \dialog_fbx2glb.cpp \dialog_osgb_to_b3dm.cpp \main.cpp \mainwindow.cpp \scene.cppHEADERS += \dialog_fbx2glb.h \dialog_osgb_to_b3dm.h \mainwindow.h \scene.hFORMS += \dialog_fbx2glb.ui \dialog_osgb_to_b3dm.ui \mainwindow.ui# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += targetDISTFILES += \images/211.ico \images/Clear2.ico \images/File.ico \images/Open.ico \images/opendir.png \images/openfile.png

Scene.h

#ifndef SCENE_H
#define SCENE_H#include <QObject>
#include <QWidget>#include <Qt3DCore/QEntity>
#include <Qt3DRender/QMesh>
#include <Qt3DRender/QCamera>
#include <Qt3DRender/QPointLight>
#include <Qt3DRender/QDirectionalLight>
#include <Qt3DCore/QTransform>
#include <Qt3DWindow>
#include <QOrbitCameraController>
#include <QFirstPersonCameraController>#include <Qt3DExtras/QForwardRenderer>
#include <Qt3DExtras/QPhongMaterial>
#include <Qt3DExtras/QTorusMesh>
#include <Qt3DExtras/QSphereMesh>#include <QKeyEvent>
#include <QTransform>
#include <QComponent>
#include <QQuaternion>
#include <QInputAspect>class Scene : public QObject
{Q_OBJECT
public:Qt3DCore::QEntity *rootEntity;Qt3DCore::QEntity *model;Qt3DCore::QTransform *transform;Qt3DRender::QDirectionalLight *light;//explicit Scene(Qt3DExtras::Qt3DWindow *, QObject *parent=nullptr);void SetupMesh(Qt3DRender::QMesh *mesh);void StartScene();void Camera(Qt3DExtras::Qt3DWindow *view);void setCameraCenterPoint(QVector3D center);Qt3DCore::QEntity* findChildQEntity(QString objName,Qt3DCore::QEntity* rootEnt);QVector3D computCenterPoint(Qt3DCore::QEntity* first);void initOrbitCameraController(Qt3DCore::QEntity *ent);void initFirstPersonCameraController(Qt3DCore::QEntity *ent);void init3d(Qt3DExtras::Qt3DWindow *view);void NewScene(Qt3DRender::QMesh *);void NewScene2(Qt3DRender::QMesh *mesh);void SetupTransformRoot(Qt3DCore::QEntity* model);void SetupTransform(Qt3DCore::QEntity* modelPrivate);void SetupMaterial(Qt3DCore::QEntity* model);void SetupLighting();//添加新實體Qt3DCore::QEntity* addMeshEntity(Qt3DRender::QMesh *mesh);Qt3DCore::QEntity* addEntity(Qt3DCore::QComponent *comp);//Qt3DCore::QEntity* addNewEntity();//void KeyControls(QKeyEvent *event);void wheelControls(QWheelEvent *event);void mouseControls(QMouseEvent *event);void mousePressControls(QMouseEvent *event);void paintALL();public slots:void LightXChanged(int angle);void LightYChanged(int angle);void LightZChanged(int angle);private:Qt3DExtras::Qt3DWindow *view;unsigned int backgroudColor=0x42f4bc;    //0xffffff;  0x42f4bc//QPoint m_qpRotPosOld;int m_iScloe; //滾動放大縮小尺寸//旋轉double m_dRotX;double m_dRotY;double m_dRotZ;//位移double m_dMoveX;double m_dMoveY;double m_dMoveZ;//};#endif // SCENE_H

scene.cpp

#include "scene.h"
#include <cmath>Scene::Scene(Qt3DExtras::Qt3DWindow *view, QObject *parent) : QObject (parent)
{this->view=view;rootEntity = new Qt3DCore::QEntity();SetupTransformRoot(rootEntity);//view->setRootEntity(rootEntity);view->defaultFrameGraph()->setClearColor(QColor(QRgb(this->backgroudColor)));   //0x42f4bcCamera(view);StartScene();//this->initOrbitCameraController(rootEntity);//this->initFirstPersonCameraController();
}void Scene::Camera(Qt3DExtras::Qt3DWindow *view)
{//其中camera是新建的camera實體,lens表示了鏡頭,這個函數有著四個參數,//第一個參數是視覺域,   45.0f//第二個是分辨率(這里選擇了16比9),  16.0f/9.0f//第三個參數是近面擺放位置,   0.1f//最后一個是遠面放置位置,    3000.0f//后兩個參數的選擇當中要特別注意,只有在遠近面之間的物體才會顯示,所以要是想全部顯示出所加入的實體,//那么近面就要足夠近,遠面就要足夠遠。// Camera//Qt3DRender::QCamera *cameraEntity = view->camera();Qt3DRender::QCamera *camera = view->camera();camera->lens()->setPerspectiveProjection(45.0f,16.0f/9.0f, 0.1f, 3000.0f);   //近面板0.1f,遠面板1000.0fcamera->setViewCenter(QVector3D(-789, -2343, 10));    //0, 0, 0camera->setPosition(QVector3D(-789, -2343, 200));   //0,0,40  -200  5000  相機高度Qt3DInput::QInputAspect *input = new Qt3DInput::QInputAspect();view->registerAspect(input);//input->setCamera(cameraEntity);//使攝像機能左右轉動
}void Scene::setCameraCenterPoint(QVector3D center)
{Qt3DRender::QCamera *camera = view->camera();camera->lens()->setPerspectiveProjection(45.0f,16.0f/9.0f, 0.1f, 3000.0f);   //近面板0.1f,遠面板1000.0fcamera->setViewCenter(QVector3D(center.x()*1.5, center.y()*1.5, abs(center.z())));    //0, 0, 0camera->setPosition(QVector3D(center.x()*1.5, center.y()*1.5, abs(center.z())*1.5+50));   //0,0,40  -200  5000  相機高度qDebug()<<"camera point="<<camera->position();//Qt3DInput::QInputAspect *input = new Qt3DInput::QInputAspect();view->registerAspect(input);
}Qt3DCore::QEntity* Scene::findChildQEntity(QString objName,Qt3DCore::QEntity* rootEnt)
{for (Qt3DCore::QNode* childNode : rootEnt->childNodes()){QString itemName="";Qt3DCore::QEntity* testObj=dynamic_cast<Qt3DCore::QEntity*>(childNode);if(testObj){itemName=testObj->objectName();if(objName==itemName){return testObj;}}}return nullptr;
}QVector3D Scene::computCenterPoint(Qt3DCore::QEntity* first)
{QVector3D center(0, 0, 0);if(first!=nullptr){// Now iterate over all the components and calculate the center pointint totalSize=0;//for (Qt3DCore::QNode* childNode : first->childNodes()){Qt3DCore::QTransform* tranobj=dynamic_cast<Qt3DCore::QTransform*>(childNode);if(tranobj){center += tranobj->translation();totalSize+=1;}Qt3DRender::QMesh* meshobj=dynamic_cast<Qt3DRender::QMesh*>(childNode);if(meshobj){center += meshobj->geometry()->minExtent();center += meshobj->geometry()->maxExtent();totalSize+=2;}}//center /= totalSize; // compute the center point//定位相機//scene->setCameraCenterPoint(center);//}return center;
}void Scene::init3d(Qt3DExtras::Qt3DWindow *view)
{delete model;//view->defaultFrameGraph()->setClearColor(QColor(QRgb(this->backgroudColor)));Camera(view);this->StartScene();
}void Scene::StartScene()
{model = new Qt3DCore::QEntity(rootEntity);model->setObjectName("救生圈場景模型");//救生圈場景 模型   這個尺寸大小影響顯示Qt3DExtras::QTorusMesh *torusMesh = new Qt3DExtras::QTorusMesh(model);torusMesh->setRadius(5);torusMesh->setMinorRadius(1);torusMesh->setRings(100);torusMesh->setSlices(20);model->addComponent(torusMesh);/*Qt3DExtras::QSphereMesh *sphereMesh = new Qt3DExtras::QSphereMesh(model);sphereMesh->setRadius(5);model->addComponent(sphereMesh);QString filename="C:/data/obj/Tile_+005_+006_OBJ/Tile_+005_+006/Tile_+005_+006.obj";//filename="D:\\data\\data3d\fbx\\HCZ.fbx";Qt3DRender::QMesh *mesh = new Qt3DRender::QMesh(model);mesh->setSource(QUrl::fromLocalFile(filename));mesh->setMeshName("objMesh");//mesh->setSource(QUrl("qrc:/data/obj/Tile_+005_+006_OBJ/Tile_+005_+006/Tile_+005_+006.obj"));//mesh->setSource(QUrl(filename));   //file:///model->addComponent(mesh);*///SetupTransform(model);SetupMaterial(model);SetupLighting();}void Scene::NewScene(Qt3DRender::QMesh *mesh)
{delete model;model = new Qt3DCore::QEntity(rootEntity);SetupMesh(mesh);SetupTransform(model);SetupMaterial(model);SetupLighting();
}
void Scene::NewScene2(Qt3DRender::QMesh *mesh)
{delete model;model = new Qt3DCore::QEntity(rootEntity);SetupMesh(mesh);SetupTransform(model);SetupMaterial(model);SetupLighting();
}
Qt3DCore::QEntity* Scene::addMeshEntity(Qt3DRender::QMesh *mesh)
{Qt3DCore::QEntity* newEnt = new Qt3DCore::QEntity(rootEntity);newEnt->addComponent(mesh);return newEnt;
}Qt3DCore::QEntity* Scene::addEntity(Qt3DCore::QComponent *comp)
{Qt3DCore::QEntity* newEnt = new Qt3DCore::QEntity(rootEntity);newEnt->addComponent(comp);return newEnt;
}Qt3DCore::QEntity* Scene::addNewEntity()
{return new Qt3DCore::QEntity(rootEntity);
}void Scene::SetupMesh(Qt3DRender::QMesh *mesh)
{model->addComponent(mesh);
}void Scene::SetupTransformRoot(Qt3DCore::QEntity* model)
{transform = new Qt3DCore::QTransform(model);transform->setScale3D(QVector3D(1, 1, 1));transform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(1, 0, 0), 0));//transform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(0, 1, 0), 0));//transform->setScale(1.0f);//transform->setTranslation(QVector3D(-700.0f,-2100.0f,10.0f));model->addComponent(transform);
}
void Scene::SetupTransform(Qt3DCore::QEntity* modelPrivate)
{Qt3DCore::QTransform* tf = new Qt3DCore::QTransform(modelPrivate);tf->setScale3D(QVector3D(1, 1, 1));tf->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(0, 0, 0), 0));//tf->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(0, 1, 0), 0));//tf->setScale(1.0f);//tf->setTranslation(QVector3D(-700.0f,-2100.0f,10.0f));modelPrivate->addComponent(tf);
}void Scene::SetupMaterial(Qt3DCore::QEntity* model)
{Qt3DRender::QMaterial *material = new Qt3DExtras::QPhongMaterial(model);model->addComponent(material);
}void Scene::SetupLighting()
{Qt3DCore::QEntity *lightEntity = new Qt3DCore::QEntity(rootEntity);light = new Qt3DRender::QDirectionalLight(lightEntity);light->setColor("white");light->setIntensity(1);light->setWorldDirection(QVector3D(0,0,-1));lightEntity->addComponent(light);
}//接管相機的鼠標操作 盤旋操作
void Scene::initOrbitCameraController(Qt3DCore::QEntity *ent)
{Qt3DExtras::QOrbitCameraController *controller = new Qt3DExtras::QOrbitCameraController(ent);controller->setCamera(view->camera());}
//接管相機的鼠標操作  第一人操作
void Scene::initFirstPersonCameraController(Qt3DCore::QEntity *ent)
{Qt3DExtras::QFirstPersonCameraController *controller=new Qt3DExtras::QFirstPersonCameraController(ent);controller->setCamera(view->camera());
}void Scene::paintALL()
{//對rootEntity 整體操作transform->setTranslation(QVector3D(m_dMoveX,m_dMoveY,m_iScloe));transform->setRotation(QQuaternion(sqrt(m_dRotX*m_dRotX+m_dRotY*m_dRotY),m_dRotX,m_dRotY,m_dRotZ));}//mouse wheel +/-  放大/縮小 功能
void Scene::wheelControls(QWheelEvent *event)
{float scale=2;if(event->angleDelta().x() >0 || event->angleDelta().y()>0){//放大//scale=1.1f;transform->setTranslation(QVector3D(transform->translation().x(),transform->translation().y(),transform->translation().z()+scale));}else{   //縮小//scale=0.9f;transform->setTranslation(QVector3D(transform->translation().x(),transform->translation().y(),transform->translation().z()-scale));}/*if (event->delta() < 0) {//m_iScloe--;m_iScloe=event->delta();this->paintALL();}else if (event->delta() > 0) {//m_iScloe++;m_iScloe=event->delta();this->paintALL();}*/}void Scene::mousePressControls(QMouseEvent *event)
{if(event->button()==Qt::LeftButton){}
}void Scene::mouseControls(QMouseEvent *event)
{QPoint pos = event->pos();//左鍵按下+move=>旋轉if( event->buttons() & Qt::LeftButton){if (pos.x()  > m_qpRotPosOld.x()){m_dRotX += 1;}else if(pos.x()  < m_qpRotPosOld.x()){m_dRotX -= 1;}if(pos.y()  > m_qpRotPosOld.y()){m_dRotY += 1;}else if(pos.y()  < m_qpRotPosOld.y()){m_dRotY -= 1;}//this->paintALL();}if( event->buttons() & Qt::RightButton)             //右鍵{   //右鍵按下+move=>移動if (pos.x()  > m_qpRotPosOld.x()){m_dMoveX += 1;}else if(pos.x()  < m_qpRotPosOld.x()){m_dMoveX -= 1;}if(pos.y()  > m_qpRotPosOld.y()){m_dMoveY -= 1;}else if(pos.y()  < m_qpRotPosOld.y()){m_dMoveY += 1;}//this->paintALL();}//rotateif(event->button() & Qt::RightButton){   //mouse right press and moveing//if(event->type()==QEvent::MouseMove){//event->MouseButtonPressint dy=pos.y()-m_qpRotPosOld.y();int dx=pos.x()-m_qpRotPosOld.x();if(dy>0){transform->setRotationY(transform->rotationY()+1);}else if(dy<0){transform->setRotationY(transform->rotationY()-1);}//if(dx>0){transform->setRotationX(transform->rotationX()+1);}else if(dx<0){transform->setRotationX(transform->rotationX()-1);}}}/**///moveif(event->button() & Qt::LeftButton){   //mouse right press and moveing//if(event->type()==QEvent::MouseMove){//event->MouseButtonPressint dy=pos.y()-m_qpRotPosOld.y();int dx=pos.x()-m_qpRotPosOld.x();if(dy>0){transform->setTranslation(QVector3D(transform->translation().x(),transform->translation().y()-2,transform->translation().z()));}else if(dy<0){transform->setTranslation(QVector3D(transform->translation().x(),transform->translation().y()+2,transform->translation().z()));}if(dx>0){transform->setTranslation(QVector3D(transform->translation().x()-2,transform->translation().y(),transform->translation().z()));}else if(dx<0){transform->setTranslation(QVector3D(transform->translation().x()+2,transform->translation().y(),transform->translation().z()));}}}//旋轉顯示窗口//glTranslatef(m_dMoveX, m_dMoveY, m_iScloe);//glRotatef(sqrt(m_dRotX*m_dRotX+m_dRotY*m_dRotY), m_dRotY,m_dRotX,m_dRotZ);m_qpRotPosOld = pos;
}void Scene::KeyControls(QKeyEvent *event){if (event->modifiers().testFlag(Qt::ControlModifier)){//ctrl+方向鍵if(event->key()==Qt::Key_Up){transform->setRotationX(transform->rotationX()-6);}if(event->key()==Qt::Key_Down){transform->setRotationX(transform->rotationX()+6);}if(event->key()==Qt::Key_Left){transform->setRotationY(transform->rotationY()-6);}if(event->key()==Qt::Key_Right){transform->setRotationY(transform->rotationY()+6);}}else if (event->modifiers().testFlag(Qt::ShiftModifier)) {//shift+方向鍵 上/下if(event->key()==Qt::Key_Up){  //放大transform->setTranslation(QVector3D(transform->translation().x(),transform->translation().y(),transform->translation().z()-2));}if(event->key()==Qt::Key_Down){  //縮小transform->setTranslation(QVector3D(transform->translation().x(),transform->translation().y(),transform->translation().z()+2));}}else{//方向鍵  moveif(event->key()==Qt::Key_Up){transform->setTranslation(QVector3D(transform->translation().x(),transform->translation().y()+1,transform->translation().z()));}if(event->key()==Qt::Key_Down){transform->setTranslation(QVector3D(transform->translation().x(),transform->translation().y()-1,transform->translation().z()));}if(event->key()==Qt::Key_Left){transform->setTranslation(QVector3D(transform->translation().x()-1,transform->translation().y(),transform->translation().z()));}if(event->key()==Qt::Key_Right){transform->setTranslation(QVector3D(transform->translation().x()+1,transform->translation().y(),transform->translation().z()));}}
}void Scene::LightXChanged(int angle)
{light->setWorldDirection(QVector3D(angle,light->worldDirection().y(),light->worldDirection().z()));
}void Scene::LightYChanged(int angle)
{light->setWorldDirection(QVector3D(light->worldDirection().x(),angle,light->worldDirection().z()));
}void Scene::LightZChanged(int angle)
{light->setWorldDirection(QVector3D(light->worldDirection().x(),light->worldDirection().y(),angle));
}

本blog地址:https://blog.csdn.net/hsg77

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/209718.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/209718.shtml
英文地址,請注明出處:http://en.pswp.cn/news/209718.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2023年法國經銷商Solu-Watt來訪安科瑞-安科瑞 蔣靜

2023年4月10日上午9點&#xff0c;法國Solu-Watt公司Matthieu先生一行到安科瑞考察參觀工廠的智能化出入庫工作站、柔性化儀表生產車間及實驗室。自1992年以來&#xff0c;Solu-Watt在電氣設備市場中不斷發展。能夠提供量身定制的安裝有線電氣解決方案&#xff08;電氣柜、接線…

如何用Qt配置git項目并上傳Gitee

1.進入到Qt項目文件夾內&#xff0c;打開 “Git Bash Here” 2.初始化&#xff0c;在“Git Bash Here”中輸入 git init 3.加入所有文件&#xff0c;在“Git Bash Here”中輸入 git add . (需要注意&#xff0c;git add 后面還有一個點) 4.添加備注&#xff0c;git com…

STL源碼剖析筆記——哈希表、unordered_set、unordered_map、unordered_mutiset、unordered_mutimap

系列文章目錄 STL源碼剖析筆記——迭代器 STL源碼剖析筆記——vector STL源碼剖析筆記——list STL源碼剖析筆記——deque、stack&#xff0c;queue STL源碼剖析筆記——Binary Heap、priority_queue STL源碼剖析筆記——AVL-tree、RB-tree、set、map、mutiset、mutimap STL源…

一套rk3588 rtsp服務器推流的 github 方案及記錄 -01

我不生產代碼&#xff0c;我只是代碼的搬運工&#xff0c;相信我&#xff0c;看完這個文章你的圖片一定能變成流媒體推出去。 訴求&#xff1a;使用opencv拉流&#xff0c;轉成bgr數據&#xff0c;需要把處理后的數據&#xff08;BGR&#xff09;編碼成264&#xff0c;然后推流…

字符串函數strtok

1.調用格式&#xff1a; 2.調用形式&#xff1a;char*strtok(char*p1,const char*p2),其中第二個是由分隔符組成的字符串&#xff0c;第一個為需要分隔的字符串 3.調用目的&#xff1a;將分隔符之間的字符串取出 4.調用時一般將源字符串拷貝后調用&#xff0c;因為此函數會將…

基于Unity3D 低多邊形地形模型紋理貼圖

在線工具推薦&#xff1a; 3D數字孿生場景編輯器 - GLTF/GLB材質紋理編輯器 - 3D模型在線轉換 - Three.js AI自動紋理開發包 - YOLO 虛幻合成數據生成器 - 三維模型預覽圖生成器 - 3D模型語義搜索引擎 當談到游戲角色的3D模型風格時&#xff0c;有幾種不同的風格&#xf…

【工程實踐】使用modelscope下載大模型文件

前言 Modelscope&#xff08;魔搭社區&#xff09;是阿里達摩院的一款開源模型平臺&#xff0c;里面提供了很多的熱門模型供使用體驗&#xff0c;其中的模型文件可以通過git clone 快速下載。并且為模型提供了Notebook的快速開發體驗&#xff0c;使用阿里云服務&#xff0c;不需…

【優選算法系列】【專題二滑動窗口】第三節.904. 水果成籃和438. 找到字符串中所有字母異位詞

文章目錄 前言一、水果成籃 1.1 題目描述 1.2 題目解析 1.2.1 算法原理 1.2.2 代碼編寫 1.2.3 題目總結二、找到字符串中所有字母異位詞 2.1 題目描述 2.2 題目解析 2.2.1 算法原理 2.2.2 代碼編寫 …

SAP UI5 walkthrough step9 Component Configuration

在之前的章節中&#xff0c;我們已經介紹完了MVC的架構和實現&#xff0c;現在我們來講一下&#xff0c;SAPUI5的結構 這一步&#xff0c;我們將所有的UI資產從index.html里面獨立封裝在一個組件里面 這樣組件就變得獨立&#xff0c;可復用了。這樣&#xff0c;無所什么時候我…

隊列的實現

學習就像一段長跑&#xff0c;比的不是誰跑得快&#xff0c;而是誰更能堅持&#xff01;&#xff01; 1 隊列的概念及結構 隊列&#xff1a;只允許在一端進行插入數據操作&#xff0c;在另一端進行刪除數據操作的特殊線性表&#xff0c;隊列具有先進先出 FIFO(First In First O…

外網訪問內網服務器使用教程

如何在任何地方都能訪問自己家里的筆記本上的應用&#xff1f;如何讓局域網的服務器可以被任何地方訪問到&#xff1f;有很多類似的需求&#xff0c;我們可以統一用一個解決方案&#xff1a;內網穿透。內網穿透的工具及方式有很多&#xff0c;如Ngrok、Ssh、autossh、Natapp、F…

linux具體命令(一)

1. cd CD命令是Linux和類Unix操作系統中非常常用的一個命令&#xff0c;它的全稱是“change directory”&#xff0c;用于改變當前的工作目錄。用戶可以通過這個命令進入到不同的目錄中&#xff0c;進行文件操作或是執行其他任務。 以下是CD命令的一些基本用法&#xff1a; 進…

特殊進程之守護進程

文章目錄 1、守護進程的概念2、如何查看守護進程3、編寫守護進程的步驟3.1 創建子進程&#xff0c;父進程退出3.2 在子進程中創建新會話3.3 改變當前工作目錄3.4 重設文件權限掩碼3.5 關閉不需要的文件描述符3.6 某些特殊的守護進程打開/dev/null 4、守護進程代碼示例 1、守護進…

[UNILM]論文實現:Unified Language Model Pre-training for Natural Language.........

文章目錄 一、完整代碼二、論文解讀2.1 介紹2.2 架構2.3 輸入端2.4 結果 三、過程實現四、整體總結 論文&#xff1a;Unified Language Model Pre-training for Natural Language Understanding and Generation 作者&#xff1a;Li Dong, Nan Yang, Wenhui Wang, Furu Wei, Xia…

js new 原理

mdn new new 調用函數時&#xff0c;該函數將被用作構造函數 類只能用 new 運算符實例化 不使用 new 調用一個類將拋出 TypeError。 過程 new Foo(…) 執行時&#xff1a; 創建一個空的簡單 JavaScript 對象。 為方便起見&#xff0c;我們稱之為 newInstance。 如果構造函數…

華為OD機試真題-執行任務賺積分-2023年OD統一考試(C卷)

題目描述: 現有N個任務需要處理,同一時間只能處理一個任務,處理每個任務所需要的時間固定為1。 每個任務都有最晚處理時間限制和積分值,在最晚處理時間點之前處理完成任務才可獲得對應的積分獎勵。 可用于處理任務的時間有限,請問在有限的時間內,可獲得的最多積分。 輸入…

《LeetCode力扣練習》代碼隨想錄——字符串(替換數字---Java)

《LeetCode力扣練習》代碼隨想錄——字符串&#xff08;替換數字—Java&#xff09; 刷題思路來源于 代碼隨想錄 54. 替換數字 受制于語言限制&#xff0c;很普通的解法 import java.util.Scanner; class Main {public static void main(String[] args) {Scanner innew Scanner…

MyBatis--07--啟動過程分析、SqlSession安全問題、攔截器

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 談談MyBatis的啟動過程具體的操作過程如下&#xff1a;實現測試類,并測試SqlSessionFactorySqlSession SqlSession有數據安全問題?在MyBatis中&#xff0c;SqlSess…

vuex如何存儲數據、獲取數據、以及數據的持久化

前提必須已經在vue中安裝了vuex插件不然無法使用&#xff0c;不知道怎么創建vue和安裝vuex的可以看這個視頻&#xff0c;node.js版本最好16以上不然可能會安裝失敗&#xff1a;30分鐘學會Vue之VueRouter&Vuex 趁著暑假掌握一門技能 大學生前端實習畢業設計必備技能_嗶哩嗶哩…

好代碼資源網整站打包代碼(包含了最新數據),集成了深度二開的ripro主題,非常適合做資源網站創業用

好代碼資源網是基于wordpress開發的一個資源分享類網站&#xff0c;在開發者圈子里還算小有名氣&#xff0c;這里分享嬰整站打包代碼&#xff08;包含了最新數據&#xff09;。網站本身集成了深度二開的ripro主題&#xff0c;非常適合做資源網站創業用。 資源下載類網站目前還…