Qt 入門 5 之其他窗口部件

Qt 入門 5 之其他窗口部件

  • 本文介紹的窗口部件直接或間接繼承自 QWidget 類
  • 詳細介紹其他部件的功能與使用方法

1. QFrame 類

  • QFrame類是帶有邊框的部件的基類。它的子類包括最常用的標簽部件QLabel另外還有 QLCDNumber、QSplitter,QStackedWidget,QToolBox 和 QAbstractScrol1Area類。QAbstractScrollArea類是所有帶有滾動區域的部件類的抽象基類,這里需要說明,Qt中凡是帶有Abstract字樣的類都是抽象基類。抽象基類是不能直接使用的,但是可以繼承該類實現自己的類,或者使用它提供的子類。QAbstractScrollArea的子類中有最常用的文本編輯器類QTextEdit類和各種項目視圖類,這些類會在后面章節中接觸到,這里不再講解

  • 帶邊框部件最主要的特點就是可以有一個明顯的邊界框架。QFrame類的主要功能就是用來實現不同的邊框效果,這主要是由邊框形狀(Shape)和邊框陰影(Shadow)組合來形成的。QFrame類中定義的主要邊框形狀如表3-1所列,邊框陰影如表3-2所列。這里要說明兩個名詞:lineWidth和midLineWidth,其中,lineWidth是邊框邊界線的寬度;而midlineWidth是在邊框中額外插入的一條線的寬度,這條線的作用是為了形成3D效果,并且只在Box、Hline和VLine 表現為凸起或者凹陷時有用。QFrame的這些元素組合成的所有邊框效果如圖3-12所示。
    在這里插入圖片描述
    在這里插入圖片描述

  • 下面在程序中演示一下具體效果。新建 Qt Widgets應用項目,命名為 myframe,完成后進入項目.ui文件 拖一個 Frame到界面上,后打開mywidget.ui文件,在Qt設計器中從部件列表里拖入一個Frame 到界面上,然后在右下方的屬性欄中更改其frameShape為Box,frameShadow為Sunken,lineWidth為5,midLineWidth為10。在屬性欄中設置部件的屬性,這和在源碼中用代碼實現是等效的,其實也可以直接在mywidget.cpp文件中的MyWidget構造函數里使用如下代碼來代替:

    //與ui設計等效ui->frame->setFrameShape(QFrame::Box);ui->frame->setFrameShadow(QFrame::Sunken);//以上兩個函數可以使用setFrameStyle(QFrame::Box|QFrame::Sunken)代替ui->frame->setLineWidth(5);ui->frame->setMidLineWidth(10);
  • 效果如下:
    在這里插入圖片描述

  • 下面要講的部件大都是Qt 的標準部件,所以大多會在Qt設計器中直接設置其屬性,同樣也可通過相應的代碼實現。

  • 對于QFrame的子類,都繼承了他的邊框設置功能。

1.1 QLabel

  • 標簽QLabel部件用來顯示文本或者圖片。在設計器中向界面拖入一個Label,然后將其拖大點,并在屬性欄中設置對其方式alignment的屬性,水平的改為AlignHCenter,垂直的改為 AlignVCenter,這樣QLabel中的文本就會在正中間顯示。
    在這里插入圖片描述

  • font屬性可以對字體進行設置,也可以通過代碼進行設置,下面打開mywidget.cpp文件,在構造函數中添加如下代碼:

 //QLabelQFont font;font.setFamily("華文行楷");font.setPointSize(20);font.setBold(true);font.setItalic(true);ui->label->setFont(font);

在這里插入圖片描述

  • QFont類提供了對字體的設置,這里使用了“華文行楷”字體族、大小為20、加粗斜體,通過QLabel的setFont()函數可以使用新建的字體
  • QLabel屬性欄中的wordWrap屬性可以實現文本的自動換行。如果文本過長時不想自動換行,而是在后面自動省略,那么可以使用QFontMetrics類,該類用來計算給定字體的字符或字符串的大小,其中包含了多個實用函數。要使用QFontMetrics,則可以通過創建對象的方式,或通過QWidget::fontMetrics()來返回當前部件字體的QFontMetrics對象。下面繼續在構造函數中添加代碼:
 QString string=tr("標題太長,需要進行省略!");QString str=ui->label->fontMetrics().elidedText(string,Qt::ElideRight,180);ui->label->setText(str);

在這里插入圖片描述

  • QFontMetrics 類的elidedText()函數用來進行文本省略,第一個參數用來指定要省略的文本;第二個參數是省略模式,就是“…”省略號出現的位置,包括Qt;:Elidel,eft出現在文本開頭、Qt::ElideMiddle出現在文本中間,以及這里使用的 Qt;:ElideRight出現在文本末尾;第三個參數是文本的長度,單位是像素,只要第一個參數指定的文本的長度超過了這個值,就會進行省略。可以運行程序,調整參數值,從而查看不同參數的效果。
  • QLabel屬性欄中的scaledContents屬性可以實現縮放標簽中的內容,比如在標簽中放一張較大的圖片,則可以選中該屬性來顯示整個圖片。下面來看一下怎么在標簽中使用圖片。首先在mywidget.cpp文件中添加頭文件#include,然后在構造函數中添加一行代碼:
ui->label->setPixmap(QPixmap("E:/logo.png"));
  • 那么只需要使用相對路徑logo.png就可以了。其實,最好的方法是使用資源管理器,將圖片放到程序中,這會在第5章講述。QLabel中還可以顯示gif動態圖片,在mywidget.cpp中添加頭文件#include ,然后在myWidget 的構造函數中繼續添加代碼:
QMovie * movie=new QMovie("E:/donghua.gif");
ui->label->setMovie(move);   //在標簽中添加動畫
movie->start();           //開始播放

1.2 QLCDNumber

  • QLCDNumber部件可以讓數碼字符顯示類似液晶數字一樣的效果。從部件欄中拖入一個 LCD Number部件到界面上,然后更改其屬性:選中smallDecimalPoint 項這樣可以顯示小數點;digitCount的作用是設置顯示的數字的個數,設置為7,表示要顯示7個數字;mode選Dec表示顯示十進制數值,這里還可以設置顯示為十六進制(Hex)、八進制(Oct)和二進制(Bin)數值;segmentStyle用來設置數碼的顯示樣式,這里提供了3種樣式,選擇Filed;最后將value設置為456.123,這就是要顯示的數值,也可以在代碼中使用display()函數來設置要顯示的數值。設置好后,運行程序查看效果。在 QLCDNumber中可以顯示的數碼有0/0、1、2、3、4、5/S、6、7、8、9/g、負號、小數點、A、B、C、D、E、F、h、H、L、o、P、r、u、U、Y、冒號、度符號(輸人時使用單引號來代替)和空格

在這里插入圖片描述

1.3 QStackedWidget

  • QStackedWidget類提供了一個部件棧,可以有多個界面(稱為頁面),每個界面可以擁有自己的部件,不過每次只能顯示一個界面。這個部件需要使用QComboBox或者 QListWidget來選擇它的各個頁面。在設計模式中向界面上拖入一個List Widget和一個 Stacked Widget。在 List Widget上右擊,在彈出的級聯菜單中選擇“編輯項目”項,然后在“編輯列表窗口部件”對話框中按下左下角的加號添加兩項,并更該名稱為“第一頁”和“第二頁”。然后在 Stacked Widget 上拖入一個 Label,更改文本為“第一頁”,再單擊 Stacked Widget 右上角的小箭頭進入下一頁,再拖入一個標簽,更改文本為“第二頁”。然后再將 Stacked Widget部件的frameShape 屬性更改為 StyledPanel.最后,在信號和槽設計模式將listWidget部件的currentRowChanged()信號和stackedWidget的 setCurrentIndex()槽關聯。設置完成后運行程序可以看到,現在可以單擊 listWidget中的項目來選擇stackedWidget的頁面了。可以在設計模式中在 stackedWidget 上右擊來為它添加新的頁面
    在這里插入圖片描述

  • 運行如下:

在這里插入圖片描述

1.4 QToolBox

  • QTooIBox類提供了一列層疊窗口部件,就像常用的聊天工具 QQ中的抽屜效果從部件欄中選擇ToolBox拖入到界面上,右擊并在彈出的級聯菜單中選擇“插入頁一在當前頁之后”項來新插入一頁。然后更改其frameShape屬性為Box,并分別單擊各個頁的標簽,更改其 currentltemText 分別為“好友”、“黑名單”和“陌生人”。完成后可以運行程序查看效果

2.按鈕部件

  • QAbstractButton類是按鈕部件的抽象基類,提供了按鈕的通用功能。它的子類包括復選框 QCheckBox、標準按鈕 QPushButton、單選框按鈕 QRadioButton 和工具按鈕 QToolButton。QToolButton會在后邊講到,這一小節的內容可以參考示例程序Group Box Example.
  • 新建QtWidgets應用,項目名稱mybutton,基類選擇QWidget,類名設為MyWidget。完成后在項目文件夾中新建images 文件夾,并且放入幾張圖標圖片,供下面編寫程序時使用。
    在這里插入圖片描述

在這里插入圖片描述

2.1 QPushButton

QPushButton 提供一個標準按鈕。在項目中打開mywidget.ui文件,拖入3個PushButton 到界面上,然后將它們的objectName 依次更改為pushBtn1、pushBtn2和pushBtn3。下面選中pushBtn1的checkable屬性,使得它可以擁有“選中”和“未選中”兩種狀態;再選中pushBtn2的flat屬性,可以不顯示該按鈕的邊框,然后轉到pushBtn1 的toggled(bool)信號的槽,更改如下:

void MyWidget::on_pushButton1_toggled(bool checked)   //按鈕是否處于被按下狀態
{qDebug()<<tr("按鈕是否被按下:")<<checked;
}
  • 運行如下,當pushBtn1 處于按下狀態的時候,checked 為true,否則為false。
    在這里插入圖片描述

  • 下面再MyWidget類構造函數中添加代碼:

MyWidget::MyWidget(QWidget *parent): QWidget(parent), ui(new Ui::MyWidget)
{ui->setupUi(this);ui->pushButton1->setText(tr("&nihao"));ui->pushButton2->setText(tr("幫助&H"));//ui->pushButton2->setIcon(QIcon("../mybutton/images/help.png"));ui->pushButton3->setText(tr("z&oom"));QMenu* menu=new QMenu(this);menu->addAction(QIcon("../mybutton/images/zoom-in.png"),tr("放大"));ui->pushButton3->setMenu(menu);}
  • 代碼里為3個按鈕改變了顯示文本,在一個字母前加上“&”符號,則可以將這個按鈕的加速鍵設置為Alt加上這個字母。如果要在這個文本中顯示“&”符號,可以使用"&&"。也可以i使用setIcon()函數來給按鈕添加圖標,這里的圖片文件使用了相對路徑(當然也可以在設計模式通過更改icon屬性來實現)。對于pushBtn3,這里為其添加了下拉菜單,現在這個菜單什么功能也沒實現,運行程序可以查看效果如下:

在這里插入圖片描述

2.2 QCheckBox、QRadioButton 和 QGroupBox

  • 對于調查表之類的應用,往往提供多個選項供選擇,有些是可以選擇多項的,有些只能選擇其中一項。復選框 QCheckBox類提供了同時選擇多項的功能,而QRadioButton 提供了只能選擇一項的功能,一般要把一組按鈕放到一個QGroupBox中來管理。
  • 在設計模式時可往界面上拖入兩個GroupBox,將它們的標題分別改為“復選框和“單選框”。然后往復選框中拖人3個CheckBox,分別更改顯示內容為“跑步”、“踢球”和“游泳”。再往單選框中拖入3個RadioButton,分別更改其顯示內容為“很好”“一般”和“不好”。這里還可以選中CheckBox的tristate屬性,讓它擁有不改變狀態選中狀態和未選中狀態3種狀態。對于選擇按鈕后的操作,可以關聯它們的state-Changed()信號和自定義的槽,也可以使用isChecked()函數查看一個按鈕是否被選中。除了 Group Box,還可以使用 QButtonGroup 類來管理多個按鈕。

在這里插入圖片描述

3. QLineEdit

  • 行編輯器 QLineEdit部件是一個單行的文本編輯器,它允許用戶輸入和編輯單行的純文本內容,而且提供了一系列有用的功能,包括撤銷與恢復,剪切和拖放等操作其中,剪切復制等功能是行編輯自帶的,不用自己編碼實現,拖放功能會在第5章講到這部分內容可以查看Qt的示例程序Line Edits。
  • 新建Qt Widgets應用,項目名稱 mylineedit,基類QWidget,類名MyWidget。在設計模式時可往界面上拖入幾個標簽和 Line dit,設計界面如圖3-13所示。然后將4個Line Edit 從上到下依次更改其objectName 為lineEditl 、lineEdit2 、lineEdit3 和 lineEdit4

在這里插入圖片描述

3.1 顯示模式

  • 行編輯器QLineEdit 有四種顯示模式(echoMode),可以echoMode屬性中更改他們,分別是:
    - Normal正常顯示輸入的信息;
    - NoEcho不顯示任何輸人,這樣可以保證不泄露輸入的字符位數;
    - Password顯示為密碼樣式,就是以小黑點或星號之類的字符代替輸人的字符;
    - PasswordEchoOnEdit在編輯時顯示正常字符,其他情況下顯示為密碼樣式。

    • 這里設置lineEditl的echoMode為Password。

3.2 輸入掩碼

  • QLineEdit 提供了輸入掩碼(inputMask)來限制輸入的內容。可以使用一些特殊的字符來設置輸入的格式和內容,這些字符中有的起限制作用且必須要輸入一個字符,有的只是起限制作用,但可以不輸入字符而是以空格代替。

  • 先來看一下這些特殊字符的含義:
    在這里插入圖片描述

  • 在lineEdit2上右擊,然后轉到它的returnPressed()回車鍵按下信號的槽中,更改如下:

void MyWidget::on_lineEdit2_returnPressed()   //回車鍵按下信號的槽
{ui->lineEdit3->setFocus();      //讓lineEdit3 獲取焦點qDebug()<<ui->lineEdit2->text();     //輸出lineEdit的內容qDebug()<<ui->lineEdit2->displayText();    //輸出lineEdit2顯示的內容
}

在這里插入圖片描述

3.3 輸入驗證

  • 在QLineEdit 中還可以使用驗證器(validator)來對輸入進行約束。在mywidget.cpp 文件的構造函數中添加代碼:
//新建驗證器,指定范圍 100-999QValidator* validator=new QIntValidator(100,999,this);//在行編輯器中使用驗證器ui->lineEdit3->setValidator(validator);    
  • 在代碼中為lineEdit3添加了驗證器,那么它現在只能輸入100~999 之間的數字再進入 lineEdit3的回車鍵按下信號的槽,輸出lineEdit3的內容。然后運行程序會發現,其他的字符無法輸人,而輸入小于100的數字時,按下回車鍵也是沒有效果的QValidator 中還提供了 QDoubleValidator,可以用它來設置浮點數。如果想設置更強大的字符約束,就要使用正則表達式了,這個在第7章會講到,這里舉一個簡單的例子
QRegExp rx("- ? \d{ 1.3 }" );
OValidator*validator =new ORegExpValidator(rx,this);

這樣就可以實現在開始輸入“一”號或者不輸入,然后輸入1~3個數字的限制。

3.4 自動補全

  • QlineEdit中也提供了強大的自動補全功能,這是利用QCompleter 類實現的。在MyWidget類的構造函數中繼續添加代碼:
StrinqList wordList;
wordList <"Ωt"<"Qt Creator"< tr("你好");
QCompleter*completer=newQCompleter(wordList,this):/新建自動完成器//設置大小寫不敏感
completer->setCaseSensitivity(Ot::CaseInsensitive);
ui->lineEdit4->setCompleter(completer):

要添加#include 頭文件,運行程序,在最后一個行編輯器中輸入"Q",則自動出現 “Qt” 和 “Qt Creator” 兩個選項。QCompleter 的使用可以參考 Qt 的示例程序 Completer。

4. QAbstractSpinBox

  • QAbstractSpinBox類是一個抽象基類,提供了一個數值設定框和一個行編輯器來顯示設定值。它有3個子類QDateTimeEdit、QSpinBox 和 QDoubleSpinBox,分別用來完成日期時間、整數和浮點數的設定。
  • 下面實戰一下查看SpinBoxes示例程序。新建Qt Widgets應用,項目名稱 myspinbox,基類為QWidget,類名 MyWidget。

4.1 QDateTimeEdit

  • QDateTimeEdit 類提供了一個可以說編輯日期和時間的部件。到設計模式,從部件欄中分別拖 Time Edit、Date Edit 和 Date/Time Edit 到界面上,然后設置timeEidt 的 displayFormat 為“h:mm:ssA”,這就可以使用 12 h制來顯示。對于dataEdit,選中他的calendarPopup屬性,就可以使用彈出的日歷部件來設置如期。然后在MyWidget 類的構造函數中添加代碼:
  //設置時間為現在的系統時間ui->dateTimeEdit->setDateTime(QDateTime::currentDateTime());//設置時間的顯示格式ui->dateTimeEdit->setDisplayFormat(tr("yyyy年MM月dd日dddHH時mm分ss秒"));
  • 運行如下,還要說明,可以使用該部件的 text() 函數獲取設置的值,它返回QString 類型的字符串,也可以使用dateTime()函數,它返回QDateTime 類型數據。

在這里插入圖片描述

4.2 QSpinBox 和 QDoubleSpinBox

  • QSpinBox 用來設置整數,QDoubleSpinBox 用來設置浮點數,這兩個部件在前邊的輸入對話框中已經接觸過了。
  • 從部件欄中找到SpinBox和Double Spin Box,并將它們拖入到界面上。可以在屬性欄中看到spinBox的屬性有:后綴suffix屬性,可以設置為“%”,這樣就可以顯示百分數了;前綴prefix屬性,比如表示金錢時前面有“¥”字符;最小值 minimum屬性,設置其最小值;最大值maximum屬性設置其最大值;單步值 singleStep屬性設置每次增加的數值,默認為1;value為現在顯示的數值。而 dou-bleSpinBox又增加了一個小數位數 decimals屬性,用來設置小數點后面的位數。關于這兩個部件就不再過多講述,最后提醒大家,可以在代碼中使用value()函數來獲取設置的數值。

在這里插入圖片描述

5. QAbstractSlider

  • QAbstractSlider類用于提供區間內的一個整數值,它有一個滑塊,可以定位到一個整數區間的任意值。該類是一個抽象基類,它有3個子類QScrollBar、QSlider 和QDial。其中,滾動條QScrollBar多數是用在QScrollArea類中來實現滾動區域;QSlider就是常見的音量控制或多媒體播放進度等滑塊部件;QDial是一個刻度表盤部件這些部件可以參考Sliders示例程序。
  • 新建QtWidgets應用,項目名稱myslider,基類選擇QWidget,類名為MyWidget。完成后到設計模式,從部件欄中分別將 Dial、Horizontal Scroll Bar 和Vertical Scroll Bar、Horizontal Slider 以及Vertical Slider 等部件拖入到界面上,如下:

在這里插入圖片描述

  • 先看兩個 Scroll Bar 的屬性:maximum屬性用來設置最大值,minimum 屬性用來設置最小值;singleStep屬性是每步的步長,默認是1,就是按下方向鍵后其數值增加或者減少1;pageStep是每頁的步長,默認是10,就是按下PageUp或者PageDown按鍵后,其數值增加或者減少10;value與sliderPosition是當前值;tracking設置是否跟蹤,默認為是,就是在拖動滑塊時,每移動一個刻度,都會發射valueChanged()信號,如果選擇否,則只有拖動滑塊釋放時才發射該信號;orientation設置部件的方向,有水平和垂直兩種選擇;invertedAppearance屬性設置滑塊所在的位置,比如默認滑塊開始在最左端,選中這個屬性后,滑塊默認就會在最右端。invertedControls設置反向控制,比如默認是向上方向鍵是增大,向下方向鍵是減小,如果選中這個屬性,那么控制就會正好反過來。另外,為了使部件可以獲得焦點,需要將focusPolicy設置為StrongFocus。
  • -再來看兩個 Slider,它們有了自己的兩個屬性 tickPosition和tickInterval,前者用來設置顯示刻度的位置,默認是不顯示刻度;后者是設置刻度的間隔。
  • 而Dial有自己的屬性wrapping,用來設置是否首尾相連,默認開始與結束是分開的;屬性notchTarget 用來設置刻度之間的間隔;屬性notchesVisible用來設置是否顯示刻度。
  • 再往界面上拖人一個Spin Box,然后進人信號和槽編輯界面,將刻度表盤部件 dial的 sliderMoved(int)信號分別與其他各個部件的setValue(int)槽相連接。設置完成后運行程序,然后使用鼠標拖動刻度盤部件的滑塊,可以看到其他所有的部件都跟著變化了。

QQ2025418-204420

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

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

相關文章

JAVA學習-多線程

線程 線程(Thread)是一個程序內部的一條執行流程。 程序中如果只有一條執行流程&#xff0c;那這個程序就是單線程的程序。 線程的常用方法及構造器&#xff1a; Thread提供的常用方法public void run() 線程的任務方法public void start() 啟動線程public String getName() …

Github 2025-04-19Rust開源項目日報 Top10

根據Github Trendings的統計,今日(2025-04-19統計)共有10個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量Rust項目10Python項目1Rust: 構建可靠高效軟件的開源項目 創建周期:5064 天開發語言:Rust協議類型:OtherStar數量:92978 個Fork數量:12000…

OpenLayers:視圖變換的方法

一、什么是視圖變換&#xff1f; 視圖變換就是指視圖的 extent&#xff08;范圍&#xff09;、center&#xff08;中心點&#xff09;、zoom&#xff08;縮放級別&#xff09;、 resolution&#xff08;分辨率&#xff09;、rotation&#xff08;旋轉角&#xff09;等參數發生…

數字孿生火星探測車,星際探索可視化

運用圖撲構建數字孿生火星探測車&#xff0c;高精度還原外觀與內部構造。實時映射探測車在火星表面的移動、探測作業及設備狀態&#xff0c;助力科研人員遠程監測、分析數據&#xff0c;為火星探索任務提供可視化決策支持。

【NLP 66、實踐 ? 基于Agent + Prompt Engineering文章閱讀】

你用什么擦干我的眼淚 莎士比亞全集 工業紙巾 還是你同樣泛紅的眼睛 —— 4.19 一、?【核心函數】定義大模型調用函數 call_large_model prompt&#xff1a;用戶傳入的提示詞&#xff08;如 “請分析這篇作文的主題”&#xff09;&#xff0c;指導模型執行任務 client&…

黑馬Java基礎筆記-1

JVM&#xff0c;JDK和JRE JDK是java的開發環境 JVM虛擬機&#xff1a;Java程序運行的地方 核心類庫&#xff1a;Java已經寫好的東西&#xff0c;我們可以直接用。 System.out.print中的這些方法就是核心庫中的所包含的 開發工具: javac&#xff08;編譯工具&#xff09;、java&…

PR第一課

目錄 1.新建 2.PR內部設置 3.導入素材 4.關于素材窗口 5.關于編輯窗口 6.序列的創建 7.視頻、圖片、音樂 7.1 帶有透明通道的素材 8.導出作品 8.1 打開方法 8.2 導出時&#xff0c;需要修改的參數 1.新建 2.PR內部設置 隨意點開 編輯->首選項 中的任意內容&a…

Xcode16 調整 Provisioning Profiles 目錄導致證書查不到

cronet demo 使用的 ninja 打包&#xff0c;查找 Provisioning Profiles 路徑是 ~/Library/MobileDevice/Provisioning Profiles&#xff0c;但 Xcode16 把該路徑改為了 ~/Library/Developer/Xcode/UserData/Provisioning Profiles&#xff0c;導致在編譯 cronet 的demo 時找不…

【更新完畢】2025華中杯C題數學建模網絡挑戰賽思路代碼文章教學數學建模思路:就業狀態分析與預測

完整內容請看文末最后的推廣群 先展示文章和代碼、再給出四個問題詳細的模型 基于多模型下的就業狀態研究 摘要 隨著全球經濟一體化和信息技術的迅猛發展&#xff0c;失業問題和就業市場的匹配性問題愈加突出。為了解決這一問題&#xff0c;本文提出了一種基于統計學習和機器學…

[HOT 100] 1964. 找出到每個位置為止最長的有效障礙賽跑路線

文章目錄 1. 題目鏈接2. 題目描述3. 題目示例4. 解題思路5. 題解代碼6. 復雜度分析 1. 題目鏈接 1964. 找出到每個位置為止最長的有效障礙賽跑路線 - 力扣&#xff08;LeetCode&#xff09; 2. 題目描述 你打算構建一些障礙賽跑路線。給你一個 下標從 0 開始 的整數數組 obst…

2025年KBS SCI1區TOP:增強天鷹算法EBAO,深度解析+性能實測

目錄 1.摘要2.天鷹算法AO原理3.改進策略4.結果展示5.參考文獻6.代碼獲取 1.摘要 本文提出了增強二進制天鷹算法&#xff08;EBAO&#xff09;&#xff0c;針對無線傳感器網絡&#xff08;WSNs&#xff09;中的入侵檢測系統&#xff08;IDSs&#xff09;。由于WSNs的特點是規模…

JavaScript數據類型簡介

在JavaScript中&#xff0c;理解不同的數據類型是掌握這門語言的基礎。數據類型決定了變量可以存儲什么樣的值以及這些值能夠執行的操作。JavaScript支持多種數據類型&#xff0c;每種都有其特定的用途和特點。本文將詳細介紹JavaScript中的主要數據類型&#xff0c;并提供一些…

性能比拼: Elixir vs Go(第二輪)

本內容是對知名性能評測博主 Anton Putra Elixir vs Go (Golang) Performance Benchmark (Round 2) 內容的翻譯與整理, 有適當刪減, 相關指標和結論以原作為準 這是第二輪關于 Elixir 和 Go 的對比測試。我收到了一份來自 Elixir 創作者的 Pull Request &#xff0c;并且我認為…

接口自動化 ——fixture allure

一.參數化實現數據驅動 上一篇介紹了參數化&#xff0c;這篇 說說用參數化實現數據驅動。在有很多測試用例的時候&#xff0c;可以將測試用例都存儲在文件里&#xff0c;進行讀寫調用。本篇主要介紹 csv 文件和 json 文件。 1.讀取 csv 文件數據 首先創建 csv 文件&#xff…

`peft`(Parameter-Efficient Fine-Tuning:高效微調)是什么

peft(Parameter-Efficient Fine-Tuning:高效微調)是什么 peft庫是Hugging Face推出的用于高效參數微調的庫,它能在不調整模型全部參數的情況下,以較少的可訓練參數對預訓練模型進行微調,從而顯著降低計算資源需求和微調成本。以下從核心功能、優勢、常見微調方法、使用場…

編程常見錯誤歸類

上一篇講了調試&#xff0c;今天通過一個舉例回憶一下上一篇內容吧&#xff01; 1. 回顧&#xff1a;調試舉例 在VS2022、X86、Debug的環境下&#xff0c;編譯器不做任何優化的話&#xff0c;下?代碼執?的結果是啥&#xff1f; #include <stdio.h> int main() {int …

在windows上交叉編譯opencv供RK3588使用

環境 NDK r27、RK3588 安卓板子、Android 12 步驟操作要點1. NDK 下載選擇 r27 版本&#xff0c;解壓到無空格路徑&#xff08;如 C:/ndk&#xff09;2. 環境變量配置添加 ANDROID_NDK_ROOT 和工具鏈路徑到系統 PATH3. CMake 參數調整指定 ANDROID_NATIVE_API_LEVEL31、ANDRO…

淺析MySQL事務鎖

在 MySQL 中,事務鎖是用于確保數據一致性和并發控制的重要機制。事務鎖可以幫助防止多個事務同時修改同一數據,從而避免數據不一致和臟讀、不可重復讀、幻讀等問題。 以下是 MySQL 事務鎖的關鍵點總結: 事務鎖:用于確保數據一致性和并發控制。鎖的類型: 行級鎖:InnoDB,粒…

vue3 文件下載(excel/rar/zip)

安裝axios npm install axios 在項目中引入 import axios from axios; 1、get接口excel文件下載 const file_key ref() const downLoadExcel (value:any) > {//file_key.value value axios({method: "get",url: "/api/da/download_excel/",//url:…

RT-Thread RTThread studio 初使用

RT-Thread Studio 下載 https://www.rt-thread.org/studio.html 安裝使用 https://bbs.elecfans.com/jishu_2425653_1_1.html 4 編譯問題解決 問題一&#xff1a;error: unknown type name clock_t 具體的類型值是在sys/_types.h中定義的&#xff0c;需要包含sys/_types.h 這個…