QT基本組件

四、基本組件

  1. Designer?設計師(重點)

Qt包含了一個Designer程序,用于通過可視化界面設計開發界面,保存文件格式為.ui(界面文件)。界面文件內部使用xml語法的標簽式語言。

在Qt?Creator中創建文件時,選中界面文件選項,可以讓自帶的窗口類使用界面文件。

所有Desiger中的操作都可以通過C++代碼實現。

2、布局Layout(掌握)

可以把布局看作是一個透明的盒子,內部可以放置子組件,這些內部的組件會按照布局預設的規則自動排序。

垂直布局:內部組件豎著排成一列。

水平布局:內部組件橫著排成一行。

表格布局:內部組件排布成n*m的表格。

表單布局:用戶搭建用戶輸入的布局效果。

選中布局后,點擊可以打破布局。

布局可以貼合窗口。只需要選中窗口對象后,再次點擊按鈕之一即可。

可以使用伸展組件可以填充空白。

布局可以嵌套,對于外層布局而言,內層布局相當于一個外層布局的子組件。

3、QWidget類(掌握)

QWidget的屬性在Designer中顯示為淡黃色,

策略:除非必要情況,或實現特殊功能,否則我們的策略進行不要進行修改,因為當前策略對當前控件是最友好的。

4、界面文件與C++代碼的關系(熟悉)

5、QLabel標簽(掌握)

5.1?基本屬性

QLabel用于顯示文字或圖片,需要注意的是,QLabel不能與用戶交互(不能點擊),只能展示使用,因此沒有合適的信號函數。

QLabel常用屬性如下:

我們可以直接對標簽進行命名,系統默認的名字就是“標簽名稱_序號”。例如:

5.2?添加資源庫

把圖片導入到項目中,成為項目資源,直接使用Qt的虛擬資源路徑導入圖片,可以在任意環境中使用這些資源圖片。

Qt支持以下幾種常見的圖片格式:

jpg(不包含透明度)、png(包含透明度)、gif(動圖)等。

注意導入的圖片不能過大(分辨率過高或文件體積過大),因為圖片的操作非常消耗資源,圖片過大會過度浪費資源。

下面是導入圖片成為項目資源的操作步驟:

  1. 在QtCreator中選中項目名稱,鼠標右鍵,點擊“添加新文件”。
  2. 在彈出的窗口中,按照下圖進行操作

  1. 在彈出的窗口中給資源文件命名。例如res

  1. 在項目管理界面,直接點擊“完成”。可以看到在項目中多了個.qrc格式的資源文件

  1. 把命名好的(不包含中文字符)的圖片文件放置到項目的工作目錄中。

6、選中qrc文件,點擊,可以給資源文件新建一個虛擬路徑。

7、選中qrc文件,點擊,可以導入圖片到項目中成為資源。

  1. 導入完成后,可以在qrc文件中看到導入成功的圖片。

5.3?使用資源庫

1、點擊重新構建項目。然后就可以在Designer找到圖片資源并使用了。

2、添加圖片后,圖片比較大,可能會顯示不全,需要把scaledContents縮放模式點上。

3、為了測試方便,我們圖片最小寬高設置為400、最大寬高也設置成400、此時我們發現,圖片變形。

5.4?使用代碼添加圖片

1、我們也可以通過代碼,加載圖片,以及修剪圖片尺寸。

  1. 如果我們通過代碼,加載操作圖片,我們需要使用#include<QPixmap>頭文件,圖片類頭文件。
  2. 創建一個圖片類對象。

//?圖片類構造函數
//?參數1:圖片資源路徑(qrc文件鼠標右鍵獲取路徑)
//?參數2:樣板格式,使用默認值即可。
//?參數3:圖片顏色格式,使用默認即可。
QPixmap::?QPixmap(const?QString?&?fileName,?const?char?*?format?=?0,?Qt::ImageConversionFlags?flags?=?Qt::AutoColor)

  1. 當前已經創建了圖片類的對象,但是還需要縮放,指定圖片輸出模式。

//?縮放
//?參數1:QSize類型對象,表示目標尺寸,需要添加頭文件#include<QSize>
//?參數2:縮放模式,是一個枚舉類型,共有三種縮放模式
//?參數3:以速度還是質量優先,兩種模式。默認速度優先,也是一個枚舉。
//?返回值:轉換后的QPixmap對象。
QPixmap?QPixmap::?scaled(const?QSize?&?size,?Qt::AspectRatioMode?aspectRatioMode?=?Qt::IgnoreAspectRatio,?Qt::TransformationMode?transformMode?=?Qt::FastTransformation)?const

QSize類

//?QSize構造函數
//?寬度以及高度
QSize::?QSize(int?width,?int?height)

需要注意的是,盡量在項目開發之前使用ps等軟件預先處理好圖片,減少代碼運行時的開銷,提高代碼的運行效率。減少資源占用。

#ifndef?DIALOG_H
#define?DIALOG_H#include?<QDialog>
#include?<QPixmap>?//?圖片類
#include?<QSize>namespace?Ui?{
class?Dialog;
}class?Dialog?:?public?QDialog
{
????Q_OBJECTpublic:
????explicit?Dialog(QWidget?*parent?=?0);
????~Dialog();private:
????Ui::Dialog?*ui;
};#endif?//?DIALOG_H

dialog.cpp

#include?"dialog.h"
#include?"ui_dialog.h"Dialog::Dialog(QWidget?*parent)?:
????QDialog(parent),
????ui(new?Ui::Dialog)
{
????ui->setupUi(this);
????//?創建一個圖片對象
????//?參數:圖片資源路徑
????QPixmap?pic(":/new/prefix1/g.jpg");????//?定義size對象
????QSize?size(ui->label->width(),ui->label->height());????//?縮放
????pic?=?pic.scaled(size,Qt::KeepAspectRatio,Qt::SmoothTransformation);
????//?使用界面文件中的組件對象
????ui->label->setPixmap(pic);
}Dialog::~Dialog()
{
????delete?ui;
}

5.5?使用代碼添加動態圖

添加動態圖:

  1. 需要將我們的動態圖,放到項目文件中,并改為.gif
  2. 添加完成后,需要將動態圖,加載到項目資源中。

電影類

如果需要播放動態圖,需要用到電影類,頭文件#include<QMovie>。

//?創建電影類對象,構造函數
//?參數1:資源路徑
//?參數2:輸出模式,默認就行
//?參數3:基類指針
QMovie::?QMovie(const?QString?&?fileName,?const?QByteArray?&?format?=?QByteArray(),?QObject?*?parent?=?0)

dialog.h

#ifndef?DIALOG_H
#define?DIALOG_H#include?<QDialog>
#include?<QPixmap>?//?圖片類
#include?<QSize>
#include?<QMovie>?//?電影類頭文件namespace?Ui?{
class?Dialog;
}class?Dialog?:?public?QDialog
{
????Q_OBJECTpublic:
????explicit?Dialog(QWidget?*parent?=?0);
????~Dialog();private:
????Ui::Dialog?*ui;
private:
????QMovie?*movie;??//?電影類指針
};#endif?//?DIALOG_H

dialog.cpp

#include?"dialog.h"
#include?"ui_dialog.h"Dialog::Dialog(QWidget?*parent)?:
????QDialog(parent),
????ui(new?Ui::Dialog)
{
????ui->setupUi(this);
????//?創建一個圖片對象
????//?參數:圖片資源路徑
????QPixmap?pic(":/new/prefix1/g.jpg");????//?定義size對象
????QSize?size(ui->label->width(),ui->label->height());????//?縮放
????pic?=?pic.scaled(size,Qt::KeepAspectRatio,Qt::SmoothTransformation);
????//?使用界面文件中的組件對象
????ui->label->setPixmap(pic);????//?創建電影對象
????movie?=?new?QMovie(":/new/prefix1/test.gif");
????//?給QLabel設置電影
????ui->label_2->setMovie(movie);
????//?播放電影
????movie->start();}Dialog::~Dialog()
{
????delete?ui;
}

6、QAbstractButton按鈕類(掌握)

QAbstractButton是按鈕類的基類,因此內部包含了按鈕的基礎屬性和函數。

GroupBox分組盒子組件

QAbstractButton按鈕類的常用基本屬性

給按鈕添加一個圖標:

圖標文件可以通過下面的網站下載:

iconfont-阿里巴巴矢量圖標庫

按鈕類常用的信號如下:

注意:這個通知信號和別的信號存在區別,只有在狀態發生變化時發射。

攜帶的參數為當前狀態。

dialog.h

#ifndef?DIALOG_H
#define?DIALOG_H#include?<QDialog>
#include?<QDebug>namespace?Ui?{
class?Dialog;
}class?Dialog?:?public?QDialog
{
????Q_OBJECTpublic:
????explicit?Dialog(QWidget?*parent?=?0);
????~Dialog();private:
????Ui::Dialog?*ui;private?slots:
????void?toggledSlot(bool);
};#endif?//?DIALOG_H

dialog.cpp

#include?"dialog.h"
#include?"ui_dialog.h"Dialog::Dialog(QWidget?*parent)?:
????QDialog(parent),
????ui(new?Ui::Dialog)
{
????ui->setupUi(this);
????connect(ui->radioButton_8,SIGNAL(toggled(bool)),
????????????this,SLOT(toggledSlot(bool)));
}Dialog::~Dialog()
{
????delete?ui;
}void?Dialog::toggledSlot(bool?checked)
{
????if(checked)
????{
????????qDebug()?<<?"肯德基被選中了"?;
????}
????else
????{
????????qDebug()?<<?"不選肯德基"?;
????}
}

QButtonGroup組件

可以使用QButtonGroup組件對多個按鈕進行分組,這是一個按鈕的邏輯分組,沒有任何的UI效果。其主要的目的是用一個信號槽同時監控多個按鈕對象的狀態。

QButtonGroup繼承于QObject并非Qwidget。所以它是不可見的,用戶無法從窗口上看到這個控件。

//?構造函數,堆區創建
QButtonGroup::?QButtonGroup(QObject?*?parent?=?0)

給按鈕組,添加控件

//?參數1:添加的控件
//?參數2:序號ID
void?QButtonGroup::?addButton(QAbstractButton?*?button,?int?id?=?-1)

發送的信號

參數中表示當前觸發的按鈕本身。

表示當前觸發的按鈕序號。

dialog.h

#ifndef?DIALOG_H
#define?DIALOG_H#include?<QDialog>
#include?<QDebug>
#include?<QButtonGroup>?//?按鈕組namespace?Ui?{
class?Dialog;
}class?Dialog?:?public?QDialog
{
????Q_OBJECTpublic:
????explicit?Dialog(QWidget?*parent?=?0);
????~Dialog();private:
????Ui::Dialog?*ui;
????QButtonGroup?*btp;private?slots:
????void?buttonToggledSlot(int,bool);
};#endif?//?DIALOG_H

dialog.cpp

#include?"dialog.h"
#include?"ui_dialog.h"Dialog::Dialog(QWidget?*parent)?:
????QDialog(parent),
????ui(new?Ui::Dialog)
{
????ui->setupUi(this);????btp?=?new?QButtonGroup(this);
????btp->addButton(ui->checkBox,1);
????btp->addButton(ui->checkBox_2,2);
????btp->addButton(ui->checkBox_3,3);????//?注意,我們的按鈕控件,是可以多選的。但是按鈕組里的控件,默認是互斥的。
????//?所以,我們要解除按鈕組的互斥屬性。
????btp->setExclusive(false);????connect(btp,SIGNAL(buttonToggled(int,bool)),
????????????this,SLOT(buttonToggledSlot(int,bool)));
}Dialog::~Dialog()
{
????delete?ui;
}void?Dialog::buttonToggledSlot(int?id,?bool?checked)
{
????if(id?==?1)
????{
????????if(checked)
????????{
????????????qDebug()?<<?"PHP被選中了";
????????}
????????else
????????{
????????????qDebug()?<<?"不選PHP了"?;
????????}
????}
????else?if(id?==?2)
????{
????????if(checked)
????????{
????????????qDebug()?<<?"心之鋼被選中了";
????????}
????????else
????????{
????????????qDebug()?<<?"不選心之鋼了"?;
????????}
????}
????else?if(id?==?3)
????{
????????if(checked)
????????{
????????????qDebug()?<<?"java被選中了";
????????}
????????else
????????{
????????????qDebug()?<<?"不選java了"?;
????????}
????}
????else
????{????}
}

7、QLineEdit單行文本輸入框(掌握)

QLineEdit用于輸入一個單行文本。常用屬性如下。

dialog.cpp

#include?"dialog.h"
#include?"ui_dialog.h"Dialog::Dialog(QWidget?*parent)?:
????QDialog(parent),
????ui(new?Ui::Dialog)
{
????ui->setupUi(this);????connect(ui->pushButton,SIGNAL(clicked()),
????????????this,SLOT(btnClickedSlot()));
}Dialog::~Dialog()
{
????delete?ui;
}void?Dialog::btnClickedSlot()
{
????QString?text?=?ui->lineEdit->text();
????qDebug()?<<?"第一個QLineEdit內容:"?<<?text;????text?=?ui->lineEdit_2->text();
????qDebug()?<<?"第二個QLineEdit內容:"?<<?text;}

dialog.cpp

#include?"dialog.h"
#include?"ui_dialog.h"Dialog::Dialog(QWidget?*parent)?:
????QDialog(parent),
????ui(new?Ui::Dialog)
{
????ui->setupUi(this);????connect(ui->pushButton,SIGNAL(clicked()),
????????????this,SLOT(btnClickedSlot()));????connect(ui->lineEdit,SIGNAL(selectionChanged()),
????????????this,SLOT(selectChangedSlot()));????connect(ui->lineEdit,SIGNAL(textChanged(QString)),
????????????this,SLOT(textChangedSlot(QString)));
}Dialog::~Dialog()
{
????delete?ui;
}void?Dialog::btnClickedSlot()
{
????QString?text?=?ui->lineEdit->text();
????qDebug()?<<?"第一個QLineEdit內容:"?<<?text;????text?=?ui->lineEdit_2->text();
????qDebug()?<<?"第二個QLineEdit內容:"?<<?text;}void?Dialog::selectChangedSlot()
{
????qDebug()?<<?ui->lineEdit->selectedText();
????//????qDebug()?<<"1111"?;
}void?Dialog::textChangedSlot(QString?text)
{
????qDebug()?<<?text?;
}

8、ComboBox組合框(熟悉)

comboBox用于選擇一個選項。功能類似于QRadioButton。

常用屬性如下:

常用信號:

dialog.h

dialog.cpp

#include?"dialog.h"
#include?"ui_dialog.h"Dialog::Dialog(QWidget?*parent)?:
????QDialog(parent),
????ui(new?Ui::Dialog)
{
????ui->setupUi(this);
????connect(ui->comboBox,SIGNAL(editTextChanged(QString)),
????????????this,SLOT(editTextChangedSlot(QString)));????connect(ui->comboBox,SIGNAL(highlighted(int)),
????????????this,SLOT(highlightedSlot(int)));
}Dialog::~Dialog()
{
????delete?ui;
}void?Dialog::editTextChangedSlot(QString?text)
{
????qDebug()?<<?text?;
}void?Dialog::highlightedSlot(int?index)
{
????qDebug()?<<?index;
}

9、若干與數字相關的組件(熟悉)

//?value?屬性值發生變化時發射的信號
//?參數為當前的value值
void	valueChanged(int?value)

dialog.h

#ifndef?DIALOG_H
#define?DIALOG_H#include?<QDialog>
#include?<QDebug>namespace?Ui?{
class Dialog;
}class Dialog : public?QDialog
{
????Q_OBJECTpublic:explicit Dialog(QWidget?*parent?= 0);~Dialog();private:
????Ui::Dialog?*ui;
private?slots:void setValueSlot(int);
};#endif?//?DIALOG_H

dialog.cpp

#include?"dialog.h"
#include?"ui_dialog.h"Dialog::Dialog(QWidget?*parent)?:
????QDialog(parent),
????ui(new?Ui::Dialog)
{
????ui->setupUi(this);????connect(ui->dial,SIGNAL(valueChanged(int)),
????????????this,SLOT(setValueSlot(int)));
????connect(ui->horizontalScrollBar,SIGNAL(valueChanged(int)),
????????????this,SLOT(setValueSlot(int)));
????connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),
????????????this,SLOT(setValueSlot(int)));
????connect(ui->progressBar,SIGNAL(valueChanged(int)),
????????????this,SLOT(setValueSlot(int)));
????connect(ui->spinBox,SIGNAL(valueChanged(int)),
????????????this,SLOT(setValueSlot(int)));
????connect(ui->verticalScrollBar,SIGNAL(valueChanged(int)),
????????????this,SLOT(setValueSlot(int)));
????connect(ui->verticalSlider,SIGNAL(valueChanged(int)),
????????????this,SLOT(setValueSlot(int)));
}Dialog::~Dialog()
{
????delete?ui;
}void?Dialog::setValueSlot(int?value)
{
????ui->dial->setValue(value);
????ui->horizontalScrollBar->setValue(value);
????ui->horizontalSlider->setValue(value);
????ui->progressBar->setValue(value);
????ui->spinBox->setValue(value);
????ui->verticalScrollBar->setValue(value);
????ui->verticalSlider->setValue(value);
}

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

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

相關文章

滾雪球學Java(67):深入理解 TreeMap:Java 中的有序鍵值映射表

咦咦咦&#xff0c;各位小可愛&#xff0c;我是你們的好伙伴——bug菌&#xff0c;今天又來給大家普及Java SE相關知識點了&#xff0c;別躲起來啊&#xff0c;聽我講干貨還不快點贊&#xff0c;贊多了我就有動力講得更嗨啦&#xff01;所以呀&#xff0c;養成先點贊后閱讀的好…

機器人內部傳感器閱讀筆記及心得-位置傳感器-旋轉變壓器、激光干涉式編碼器

旋轉變壓器 旋轉變壓器是一種輸出電壓隨轉角變化的檢測裝置&#xff0c;是用來檢測角位移的&#xff0c;其基本結構與交流繞線式異步電動機相似&#xff0c;由定子和轉子組成。 旋轉變壓器的原理如圖1所示&#xff0c;定子相當于變壓器的一次側&#xff0c;有兩組在空間位置上…

MyBatis-Plus 優雅實現數據加密存儲

文章目錄 前言一、數據庫字段加解密實現1. 定義加密類型枚舉2. 定義AES密鑰和偏移量3. 配置定義使用的加密類型4. 加密解密接口5. 解密解密異常類6. 加密解密實現類6.1 AES加密解密實現類6.2 Base64加密解密實現類 7. 實現數據庫的字段保存加密與查詢解密處理類8. MybatisPlus配…

使用python進行量化交易

yfinance yfinance國內不能使用&#xff0c;可以使用tushare、akshare代替 import yfinance as yf# 輸入股票代碼 stock_symbol AAPL # 替換為你想要查詢的股票代碼# 獲取股票數據 data yf.download(stock_symbol)# 打印實時數據 print(data)pip install akshare import …

Selenium安裝與配置

文章目錄 一、selenium安裝1. Python環境準備&#xff1a;2. 安裝Selenium&#xff1a;3. 瀏覽器驅動安裝&#xff1a;4. 驗證安裝&#xff1a; 二、常見問題1. Selenium版本與瀏覽器驅動程序不兼容&#xff1a;2. 瀏覽器驅動程序路徑未正確設置&#xff1a; Selenium是一個用于…

2024年1月手機市場行業分析:蘋果手機份額驟降,國產高端手機成功逆襲!

小米Ultra發布。 一方面&#xff0c;我們有望看到國產手機再一次超越自己的決心&#xff0c;繼續創新追逐高端&#xff1b;另一方面&#xff0c;我們也不得不正視目前手機市場所面臨的危機狀態。 2024年1月的線上手機市場遠不如去年。根據鯨參謀數據顯示&#xff0c;今年1月京…

Qt(C++)面試題 | 精選25項常問

面試是每個求職者都必須經歷的一關,而QT面試更是需要面試者有深厚的編程基礎和豐富的實戰經驗。下面我們為大家整理了25道QT面試題,希望能夠幫助大家在求職路上獲得成功。 ?Qt 中常用的五大模塊是哪些? Qt 中常用的五大模塊包括: QtCore:提供了 Qt 的核心功能,例如基本的…

Java面試題之分布式/微服務篇

經濟依舊不景氣啊&#xff0c;如此大環境下Java還是這么卷&#xff0c;又是一年一次的金三銀四。 兄弟們&#xff0c;你準備好了嗎&#xff1f;沖沖沖&#xff01;歐里給&#xff01; 分布式/微服務相關面試題解 題一&#xff1a;CAP理論&#xff0c;BASE理論題二&#xff1a;…

深度神經網絡

包括&#xff1a;深度前饋神經網絡、深度卷積神經網絡、深度循環神經網絡 深度神經網絡全面概述&#xff1a;從基本概念到實際模型和硬件基礎-騰訊云開發者社區-騰訊云

MQL語言實現JSON協議庫

文章目錄 一、MQL語言實現JSON協議的意義二、定義JSON數據枚舉類型簡單數據類型復雜數據類型枚舉數據類型定義類變量清理與賦值方法構造與析構方法重載運算符添加與設置方法序列化與反序列方法 一、MQL語言實現JSON協議的意義 數據交互&#xff1a;JSON是一種輕量級的數據交換格…

【2024軟件測試面試必會技能】Postman(1): postman的介紹和安裝

Postman的介紹 Postman 是一款谷歌開發的接口測試工具,使API的調試與測試更加便捷。 它提供功能強大的 Web API & HTTP 請求調試。它能夠發送任何類型的HTTP 請求 (GET, HEAD, POST, PUT..)&#xff0c;附帶任何數量的參數 headers。 postman是一款支持http協議的接口調試…

【PTA|函數題|期末復習】指針

目錄 6-1 計算兩數的和與差&#xff08;5分&#xff09; 函數接口定義&#xff1a; 裁判測試程序樣例&#xff1a; 輸入樣例&#xff1a; 輸出樣例&#xff1a; 代碼 6-2 拆分實數的整數與小數部分 (5分) 函數接口定義&#xff1a; 裁判測試程序樣例&#xff1a; 輸入…

springboot整合mybatisPlus超級詳細

springboot整合mybatis-plus超級詳細 一、環境二、springboot整合myBatisPlus2.1新建2.2 添加Mybatis-plus和mysql依賴2.3 修改配置文件2.4 新建包和文件2.5 新建表2.6 創建實體類2.7 創建Mapper接口2.8 創建Service接口2.9 創建Service實現類2.10 增刪改查 MyBatis-Plus&#…

C# Onnx 使用onnxruntime部署實時視頻幀插值

目錄 介紹 效果 模型信息 項目 代碼 下載 C# Onnx 使用onnxruntime部署實時視頻幀插值 介紹 github地址&#xff1a;https://github.com/google-research/frame-interpolation FILM: Frame Interpolation for Large Motion, In ECCV 2022. The official Tensorflow 2…

四.QT5工具安裝和環境變量的配置

1.以管理員身份運行安裝包 2.登錄qt賬號&#xff0c;點擊【next】 3.選中同意 4.選擇安裝目錄&#xff0c;注意不能有中文和空格 5.勾選 64位 mingw。點擊【next】&#xff0c;等待安裝完成 6.配置環境變量

[07] 組件注冊

目錄 Vue.js 組件局部注冊全局注冊 Vue.js 組件 組件&#xff08;Component&#xff09;是 Vue.js 最強大的功能之一。 組件可以擴展 HTML 元素&#xff0c;封裝可重用的代碼。 組件系統讓我們可以用獨立可復用的小組件來構建大型應用&#xff0c;幾乎任意類型的應用的界面都…

為什么很多人選用QT開發,有哪些應用實例?

在軟件開發領域&#xff0c;Qt框架作為一種跨平臺的C應用程序開發框架&#xff0c;近年來受到越來越多開發者的青睞。這主要得益于其卓越的跨平臺性能、豐富的功能庫、開發效率以及社區支持。以下將通過詳實的分析&#xff0c;從不同角度探討為什么很多人改用QT開發&#xff0c…

低代碼開發:學校低成本數字化轉型的新引擎

隨著科技的飛速發展&#xff0c;數字化轉型已經成為教育行業的一大趨勢。然而&#xff0c;對于許多學校來說&#xff0c;高昂的數字化改造成本成為了一道難以逾越的門檻。本文將探討如何通過低代碼開發&#xff0c;以低成本實現學校數字化轉型&#xff0c;為教育行業注入新活力…

力扣熱題100_子串_560_和為 K 的子數組

文章目錄 題目鏈接解題思路解題代碼 題目鏈接 560.和為 K 的子數組 解題思路 1.定義變量count&#xff08;計算個數&#xff0c;返回值&#xff09;為0、n&#xff08;當前nums長度&#xff09;、preSums&#xff08;利用利用defaultdict的特性&#xff0c;當presum-k不存在…

list.stream().forEach()和list.forEach()的區別

list.stream().forEach() 和 list.forEach() 在 Java 中都是用于遍歷集合元素的方法&#xff0c;但它們在使用場景和功能上有所不同&#xff1a; list.forEach()&#xff1a; 是從 Java 8 開始引入到 java.util.List 接口的標準方法。直接對列表進行迭代&#xff0c;它采用內部…