Qt Creator 從入門到項目實戰

Qt Creator 簡介

Qt Creator 是一個跨平臺的集成開發環境(IDE),專門用于開發 Qt 應用程序。它為開發者提供了一個強大的工具集,包括代碼編輯器、調試器、UI 設計器以及性能分析工具等。

1.1 Qt Creator 的安裝

Qt Creator 支持多種操作系統,包括 Windows、macOS 和 Linux。下面是在 Ubuntu 系統上安裝 Qt Creator 的命令示例:

sudo apt-get update
sudo apt-get install qtcreator

1.2 Qt Creator 的功能特點

Qt Creator 擁有以下幾個主要功能特點:

  • 代碼編輯器:支持語法高亮、代碼折疊、代碼自動完成等功能。
  • 集成調試器:可以方便地進行斷點調試、步進代碼等調試操作。
  • UI 設計器:提供了一個可視化界面來設計用戶界面。
  • 版本控制:支持 Git 等版本控制系統,方便代碼管理和協作。
  • 構建系統:集成了 qmake 和 CMake 構建系統,支持構建和部署 Qt 應用程序。

2. 安裝與配置

在開始使用 Qt Creator 之前,需要確保正確安裝并配置了開發環境。

2.1 安裝 Qt Creator

根據不同的操作系統,安裝 Qt Creator 的步驟會有所不同。以下是在 Windows 系統上安裝 Qt Creator 的簡要步驟:

  1. 下載 Qt Creator 的安裝包。
  2. 運行安裝程序并遵循提示完成安裝。

對于 macOS 和 Linux 系統,安裝步驟類似,但可能需要通過包管理器或直接從 Qt 官方網站下載安裝包。

2.2 配置 Qt Creator

安裝完成后,需要對 Qt Creator 進行一些基本配置:

2.2.1 設置 Kit

Kit 是 Qt Creator 中的一個概念,它定義了構建和運行應用程序所需的環境配置。

  • 打開 Qt Creator。
  • 轉到 “工具”>“選項”>“構建和運行”>“ Kits”。
  • 根據你的開發環境,配置或創建一個新的 Kit。
2.2.2 配置編譯器

確保 Qt Creator 知道你的編譯器的位置:

  • 在 “工具”>“選項”>“構建和運行”>“編譯器” 中,添加你的編譯器路徑。
2.2.3 配置代碼風格

為了保持代碼的一致性,可以設置代碼風格:

  • 在 “工具”>“選項”>“代碼風格” 中,選擇或自定義代碼風格設置。
// 示例:Qt Creator代碼風格配置
// 此部分不需要實際代碼,僅作為配置過程的說明
// 在Qt Creator的選項中設置代碼縮進、空格、換行等風格

完成以上步驟后,Qt Creator 應該已經準備好用于開發 Qt 應用程序了。

3. 基礎界面與功能介紹

Qt Creator 提供了一個直觀的用戶界面,其中包含了多種功能,以幫助開發者更高效地進行軟件開發。

3.1 主界面布局

Qt Creator 的主界面通常包括以下幾個主要區域:

  • 菜單欄:提供對 Qt Creator 所有功能的訪問。
  • 工具欄:提供快速訪問常用功能的按鈕。
  • 編輯器區域:這是編寫代碼的地方,可以打開多個文件。
  • 輸出窗口:顯示構建、運行和調試信息。
  • 側邊欄:包含項目瀏覽器、類視圖、文件瀏覽器等。

3.2 功能介紹

以下是一些 Qt Creator 的關鍵功能:

3.2.1 代碼編輯器

代碼編輯器支持多種編程語言的語法高亮,包括 C++、JavaScript 和 QML。它還提供以下特性:

  • 代碼自動完成:根據上下文提供代碼補全建議。
  • 代碼折疊:允許折疊代碼塊以提高代碼的可讀性。
  • 代碼分析:靜態分析代碼,提供潛在問題的警告和提示。
// 示例:代碼編輯器中的語法高亮和代碼折疊
// 以下代碼在Qt Creator中會顯示語法高亮
int main() {// ...
}
3.2.2 調試器

Qt Creator 集成了一個功能強大的調試器,支持斷點、單步執行、查看變量值等功能。

// 示例:設置斷點的代碼
int main() {int value = 0; // 在這里設置斷點// ...
}
3.2.3 UI 設計器

Qt Creator 的 UI 設計器允許開發者使用拖放的方式來設計用戶界面。

// 示例:UI設計器中設計的簡單界面
// 以下代碼由UI設計器生成
QWidget *window = new QWidget();
QPushButton *button = new QPushButton("Click me", window);
button->setGeometry(50, 50, 100, 30);
window->show();
3.2.4 版本控制

Qt Creator 支持與 Git 等版本控制系統的集成,允許開發者進行提交、拉取、推送等操作。

# 示例:在Qt Creator中使用Git命令
git status  # 查看當前版本控制狀態
git commit -m "Initial commit"  # 提交更改
git push origin master  # 推送到遠程倉庫

通過熟悉這些基礎界面和功能,開發者可以開始使用 Qt Creator 進行 Qt 應用程序的開發。

4. 創建第一個 Qt 項目

使用 Qt Creator 創建一個新項目是開始開發 Qt 應用程序的第一步。

4.1 新建項目

  1. 打開 Qt Creator。
  2. 點擊 “新建項目” 按鈕或選擇 “文件”>“新建文件或項目”。
  3. 在彈出的 “新建” 對話框中,選擇 “應用程序” 并點擊 “選擇”。
  4. 根據需要選擇應用程序類型,例如 “Qt Widgets 應用程序”。
  5. 點擊 “繼續” 并按照向導提示填寫項目名稱和保存位置。
  6. 配置項目細節,如選擇 Qt 版本和構建套件。
  7. 完成向導,Qt Creator 將創建項目并打開編輯器。

4.2 項目結構

創建項目后,Qt Creator 會生成以下基本項目結構:

  • .pro 文件:項目文件,包含項目配置信息。
  • main.cpp:包含應用程序入口點的源文件。
  • mainwindow.ui:主窗口的 UI 設計文件(如果選擇了創建 UI)。

4.3 編寫代碼

在?main.cpp?文件中,你將找到以下代碼:

#include <QApplication>
#include "mainwindow.h"int main(int argc, char *argv[]) {QApplication app(argc, argv);MainWindow mainWindow;mainWindow.show();return app.exec();
}

這段代碼創建了一個?QApplication?實例,它是管理 GUI 應用程序的控制流和主要設置的對象。然后創建了一個?MainWindow?實例,并將其顯示出來。

4.4 構建和運行

構建和運行項目:

  1. 點擊工具欄上的 “構建和運行” 按鈕。
  2. Qt Creator 將編譯項目并啟動應用程序。

如果一切順利,你應該能看到一個簡單的窗口,這是你的第一個 Qt 應用程序。

// 示例:main.cpp中的代碼
#include <QApplication>
#include "mainwindow.h"int main(int argc, char *argv[]) {QApplication app(argc, argv);MainWindow mainWindow;mainWindow.show();return app.exec();
}

通過完成這些步驟,你已經成功創建了第一個 Qt 項目,并運行了一個基本的應用程序。接下來,你可以開始添加控件和功能,以擴展你的應用程序。

5. Qt 信號與槽機制

Qt 的信號與槽機制是 Qt 框架的核心特性之一,它是一種強大的事件通信機制,用于對象之間的通信。

5.1 信號與槽的概念

在 Qt 中,對象(通常是 QObject 的子類)可以發出信號,并且可以有相應的槽來響應這些信號。信號是對象發出的消息,表明發生了一個特定的事件;槽是對象中的函數,可以被用來響應特定信號。

5.2 定義信號與槽

信號和槽在 QObject 的子類中使用?signal?和?slot?關鍵字來定義。

// 示例:定義信號和槽
class Communicate : public QObject {Q_OBJECTpublic:Communicate(QObject *parent = nullptr) : QObject(parent) {}signals:void speak(const QString &words);public slots:void onSpeak(const QString &words) {qDebug() << "Heard:" << words;}
};

5.3 連接信號與槽

要使信號能夠觸發槽,必須使用?connect()?函數將它們連接起來。

// 示例:連接信號和槽
Communicate comm;
QObject::connect(&comm, &Communicate::speak, &comm, &Communicate::onSpeak);comm.speak("Hello, world!");

在上面的代碼中,當?speak?信號被發出時,onSpeak?槽將被調用。

5.4 信號與槽的用途

信號與槽機制常用于以下場景:

  • 用戶交互:響應用戶界面事件,如按鈕點擊。
  • 對象間的通信:一個對象的狀態改變時通知其他對象。
  • 異步操作:在后臺線程完成任務后通知主線程。

5.5 注意事項

  • 信號和槽可以是任何返回類型,但槽可以是信號返回類型的子類。
  • 信號可以帶有參數,槽必須接受相同數量和類型的參數。
  • 一個信號可以連接到多個槽,而一個槽也可以連接到多個信號。
  • 使用?disconnect()?函數可以斷開信號與槽的連接。

通過掌握 Qt 的信號與槽機制,開發者可以創建出響應性強且易于維護的 GUI 應用程序。

6. 常用 Qt 控件介紹

Qt 提供了一套豐富的控件庫,用于構建圖形用戶界面(GUI)。以下是一些常用的 Qt 控件及其用途的介紹。

6.1 QPushButton

QPushButton?是用于點擊操作的按鈕控件。

QPushButton button("Click me");
button.show();

6.2 QLabel

QLabel?用于顯示文本、圖片或其它內容。

QLabel label("This is a label");
label.show();

6.3 QLineEdit

QLineEdit?是一個單行文本編輯控件。

QLineEdit lineEdit;
lineEdit.show();

6.4 QComboBox

QComboBox?提供了一個下拉列表,用戶可以從中選擇一個選項。

QComboBox comboBox;
comboBox.addItem("Option 1");
comboBox.addItem("Option 2");
comboBox.addItem("Option 3");
comboBox.show();

6.5 QCheckBox

QCheckBox?是一個復選框,用于在兩個狀態之間切換。

QCheckBox checkBox("Check me");
checkBox.show();

6.6 QRadioButton

QRadioButton?是單選按鈕,用于在一組選項中選擇一個。

QRadioButton radioButton1("Option 1");
QRadioButton radioButton2("Option 2");
radioButton1.show();
radioButton2.show();

6.7 QSlider

QSlider?提供了一個滑動條,用戶可以通過拖動滑塊來設置值。

QSlider slider(Qt::Horizontal);
slider.show();

6.8 QSpinBox

QSpinBox?提供了一個用于輸入整數值的控件,通常與?QSlider?配合使用。

QSpinBox spinBox;
spinBox.show();

6.9 QProgressBar

QProgressBar?顯示一個進度條,通常用于指示長時間操作的進度。

QProgressBar progressBar;
progressBar.show();

6.10 QTableView

QTableView?用于顯示表格數據。

QTableView tableView;
tableView.show();

6.11 QTabWidget

QTabWidget?提供了一個選項卡式的界面,每個選項卡可以包含不同的控件。

QTabWidget tabWidget;
QWidget *tab1 = new QWidget();
QWidget *tab2 = new QWidget();
tabWidget.addTab(tab1, "Tab 1");
tabWidget.addTab(tab2, "Tab 2");
tabWidget.show();

這些控件可以組合起來創建復雜的應用程序界面。Qt 還提供了許多其他的控件和布局管理器,可以幫助開發者設計出既美觀又易用的用戶界面。

7. 布局管理

布局管理是 Qt 中用于排列窗口內控件的一種機制,它確保了應用程序的用戶界面在不同大小和分辨率的屏幕上都能保持良好的布局。

7.1 布局類型

Qt 提供了多種布局類型,以下是一些常用的布局:

  • QHBoxLayout:水平布局,控件從左到右排列。
  • QVBoxLayout:垂直布局,控件從上到下排列。
  • QGridLayout:網格布局,控件排列在一個二維網格中。
  • QStackedLayout:堆疊布局,一次只顯示一個控件。

7.2 使用布局

以下是如何使用布局的示例:

// 創建一個窗口
QWidget window;// 創建一個水平布局
QHBoxLayout *layout = new QHBoxLayout;// 創建兩個按鈕并添加到布局中
QPushButton *button1 = new QPushButton("Button 1");
QPushButton *button2 = new QPushButton("Button 2");
layout->addWidget(button1);
layout->addWidget(button2);// 設置窗口的布局
window.setLayout(layout);// 顯示窗口
window.show();

7.3 布局策略

布局管理器會根據以下策略排列控件:

  • 大小提示:控件提供大小提示,布局管理器會盡量滿足這些提示。
  • 間隔:布局管理器在控件之間添加間隔,以保持界面美觀。
  • 邊距:布局管理器在窗口邊緣和控件之間添加邊距。

7.4 布局嵌套

布局可以嵌套使用,以創建更復雜的布局結構。

// 創建一個主布局
QVBoxLayout *mainLayout = new QVBoxLayout;// 創建一個內部布局并將其添加到主布局中
QHBoxLayout *innerLayout = new QHBoxLayout;
innerLayout->addWidget(new QPushButton("A"));
innerLayout->addWidget(new QPushButton("B"));mainLayout->addLayout(innerLayout);// 添加更多控件到主布局
mainLayout->addWidget(new QPushButton("C"));
mainLayout->addWidget(new QPushButton("D"));// 設置窗口的布局
window.setLayout(mainLayout);

7.5 管理布局大小

可以使用?setSizePolicy()?方法來指定控件如何隨窗口大小變化而調整大小。

QPushButton *button = new QPushButton("Big Button");
button->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
layout->addWidget(button);

通過合理使用布局管理器,開發者可以創建出適應性強、易于維護的用戶界面。

8. 項目實戰:簡易計算器開發

在這一章,我們將通過一個簡易計算器的開發來實踐 Qt 編程。

8.1 設計 UI

首先,我們需要設計計算器的用戶界面。這通常涉及以下步驟:

  1. 創建一個新的 Qt Widgets 應用程序項目。
  2. 在項目中添加一個新的?QWidget?或?QMainWindow?作為主窗口。
  3. 使用 Qt Designer 來設計界面,或者手動在代碼中創建控件。

以下是一個簡單的計算器 UI 設計的代碼示例:

// mainwindow.ui 或 mainwindow.h
QWidget *centralWidget = new QWidget(this);
QVBoxLayout *mainLayout = new QVBoxLayout(centralWidget);QLineEdit *display = new QLineEdit(centralWidget);
mainLayout->addWidget(display);// 添加按鈕
QPushButton *button1 = new QPushButton("1", centralWidget);
QPushButton *button2 = new QPushButton("2", centralWidget);
// ... 添加更多按鈕mainLayout->addWidget(button1);
mainLayout->addWidget(button2);
// ... 添加更多按鈕到布局setCentralWidget(centralWidget);

8.2 實現邏輯

接下來,我們需要實現計算器的邏輯。這通常包括處理按鈕點擊事件,執行計算,并將結果顯示在顯示屏上。

// mainwindow.cpp
class MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) {// ... UI初始化代碼// 連接按鈕的點擊信號到相應的槽函數connect(button1, &QPushButton::clicked, this, &MainWindow::onNumberClicked);connect(button2, &QPushButton::clicked, this, &MainWindow::onNumberClicked);// ... 連接更多按鈕}public slots:void onNumberClicked() {// 獲取發送信號的按鈕QPushButton *button = qobject_cast<QPushButton *>(sender());if (button) {// 將按鈕的文本追加到顯示屏上display->insert(button->text());}}// ... 其他槽函數,如處理運算符點擊、等號點擊等signals:// ... 可以定義一些信號,如果需要的話
};#include "mainwindow.moc"

8.3 處理運算

為了處理計算,我們需要定義一些額外的槽函數來執行加、減、乘、除等運算,并在用戶點擊等號按鈕時顯示結果。

public slots:// ... 其他槽函數void onAddClicked() {// 處理加號按鈕點擊事件}void onEqualClicked() {// 處理等號按鈕點擊事件,執行計算并顯示結果}

8.4 完整示例

以下是一個簡易計算器的完整示例,包括加法和等號按鈕的處理:

// mainwindow.cpp
// ... 其他代碼void MainWindow::onAddClicked() {// 假設我們簡單地將當前顯示的數字加到之前的數字上// 實際應用中需要更復雜的邏輯來處理多個數字和運算符QString currentText = display->text();bool ok;int currentValue = currentText.toInt(&ok);if (ok) {// 存儲當前值以便后續計算m_previousValue = currentValue;// 清空顯示屏display->clear();// 設置當前運算符m_currentOperator = '+';}
}void MainWindow::onEqualClicked() {// 執行計算并顯示結果QString currentText = display->text();bool ok;int currentValue = currentText.toInt(&ok);if (ok) {int result = 0;switch (m_currentOperator) {case '+':result = m_previousValue + currentValue;break;// ... 處理其他運算符}display->setText(QString::number(result));}
}// ... 其他代碼

在這個例子中,我們簡單地實現了加法運算,并在用戶點擊等號時計算并顯示結果。實際應用中,計算器的邏輯會更復雜,需要考慮多個數字、多個運算符以及運算的順序。

通過這個實戰項目,我們學習了如何使用 Qt 創建窗口、添加控件、連接信號與槽,以及實現基本的用戶交互邏輯。

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

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

相關文章

公司內網遠程訪問配置教程:本地服務器(和指定端口應用)實現外網連接使用

在數字化時代&#xff0c;企業的辦公模式日益多元化&#xff0c;遠程辦公、跨地區協作等需求不斷增加。這使得在公司內網中配置遠程訪問變得至關重要&#xff0c;它能讓員工無論身處何地&#xff0c;只要有網絡連接&#xff0c;就能便捷地訪問公司內部的各類資源&#xff0c;如…

邊緣計算如何重塑能源管理?從技術原理到應用場景全解析

在全球能源數字化轉型的浪潮中&#xff0c;一個看似不起眼的設備正在悄悄改變工業能效管理的模式 —— 這就是邊緣計算網關。以能源領域為例&#xff0c;傳統的 "設備 - 云端" 二層架構正面臨數據傳輸延遲、網絡帶寬壓力大、斷網失效等挑戰&#xff0c;而邊緣計算技術…

自主導航巡檢機器人系統解決方案

自主導航巡檢機器人系統解決方案 運動性能強大的通用型履帶式機器人底盤&#xff0c;整車采用克里斯蒂全獨立懸掛設計&#xff0c;內部搭載高扭矩無刷電機&#xff0c;通過精心匹配的底盤高度和功率配置&#xff0c;底盤表現出卓越的通過性能、低重心、平穩運行以及高效的傳動效…

Vim 撤銷 / 重做 / 操作歷史命令匯總

Vim 撤銷 / 重做 / 操作歷史命令匯總 Vim 提供了豐富的撤銷&#xff08;undo&#xff09;、重做&#xff08;redo&#xff09;及查看操作歷史的命令&#xff0c;幫助你在編輯過程中靈活地回退或前進到任意修改點。下面按功能分類整理常用命令&#xff0c;便于快速查閱和記憶。…

裝飾模式(Decorator Pattern)重構java郵件發獎系統實戰

前言 現在我們有個如下的需求&#xff0c;設計一個郵件發獎的小系統&#xff0c; 需求 1.數據驗證 → 2. 敏感信息加密 → 3. 日志記錄 → 4. 實際發送郵件 裝飾器模式&#xff08;Decorator Pattern&#xff09;允許向一個現有的對象添加新的功能&#xff0c;同時又不改變其…

項目四.高可用集群_ansible

設備準備 安裝wordpress [rootlocalhost ~]# nmcli c del "Wired connection 1" [rootlocalhost ~]# nmcli c add type ethernet ifname ens224 con-name ens224 ipv4.method manual ipv4.addr 192.168.88.40/24 gw4 192.168.88.1 autoconnect true [rootlocalhos…

TensorFlow深度學習實戰(21)——Transformer架構詳解與實現

TensorFlow深度學習實戰&#xff08;21&#xff09;——Transformer架構詳解與實現 0. 前言1. Transformer 架構1.1 關鍵思想1.2 計算注意力1.3 編碼器-解碼器架構1.4 Transformer 架構1.5 模型訓練 2. Transformer 類別2.1 解碼器(自回歸)模型2.2 編碼器(自編碼)模型2.3 Seq2s…

20250608-在 Windows 上使用 PyCharm 通過 SSH 連接到遠程 Ubuntu 機器的 Anaconda 環境

在 Windows 上使用 PyCharm 通過 SSH 連接到遠程 Ubuntu 機器的 Anaconda 環境 1. 確保遠程機器上的 SSH 服務已啟動 在遠程 Ubuntu 機器上&#xff0c;確保 SSH 服務已安裝并啟動&#xff1a; sudo apt-get install openssh-server sudo systemctl start ssh sudo systemct…

Oracle 條件索引 case when 報錯解決方案(APP)

文章目錄 環境文檔用途詳細信息 環境 系統平臺&#xff1a;Linux x86-64 Red Hat Enterprise Linux 7 版本&#xff1a;4.5 文檔用途 本內容介紹 Oracle條件索引 case when 如何在HGDB中轉換使用。 詳細信息 1、oracle 索引 create unique index I_GL_VOUCHER_7 on gl_vo…

鴻蒙期末總結

一、概念 HarmonyOS應用關鍵概念&#xff1a;元服務和App的關系 App具有手動下載安裝、包大小無限制、應用內或應用市場更新、全量功能等特征&#xff0c;可使用全量API 元服務具有免安裝、包大小有限制、即用即走、輕量化等特征&#xff0c;只能使用“元服務API集” 鴻蒙的…

Vue3 + TypeScript + Element Plus 表格行按鈕不觸發 row-click 事件、不觸發勾選行,只執行按鈕的 click 事件

點擊表格行按鈕不觸發 row-click 事件、不觸發勾選行&#xff0c;只執行按鈕的 click 事件 點擊第一行的【編輯】&#xff0c;第一行為當前選擇行&#xff0c; 同時也勾選了復選框&#xff0c;也會執行 row-click 事件 原來的代碼&#xff1a; <el-table-column label"…

SiteAzure4.x 版本 訪問html靜態頁文件出現404錯誤

問題描述&#xff1a; SiteAzure4.*版本&#xff0c;在upload文件夾中放置了html靜態頁文件&#xff0c;訪問出現404錯誤 問題分析&#xff1a; 1、確認訪問路徑是否正確以及文件是否存在 2、確認相應文件夾權限是否正確 3、確認IIS默認文檔是否允許靜態頁&#xff0c;MIM…

[免費]微信小程序音樂播放器(爬取網易云音樂數據)(node.js后端)【論文+源碼】

大家好&#xff0c;我是java1234_小鋒老師&#xff0c;看到一個不錯的微信小程序音樂播放器(爬取網易云音樂數據)(node.js后端)&#xff0c;分享下哈。 項目視頻演示 【免費】微信小程序音樂播放器(爬取網易云音樂數據)(node.js后端) 微信小程序畢業設計_嗶哩嗶哩_bilibili …

強化學習:策略梯度概念

2.策略梯度方法 目標是使策略 不斷更新&#xff0c;回報更高。 計算每一個軌跡的回報&#xff0c;和對應的概率 目標是使回報高的軌跡概率應該高。這樣整個策略的期望回報也會高。 什么是策略期望回報&#xff1f; 就是用這個策略跑了若干個軌跡&#xff0c;得到回報&#x…

Java 中高級開發崗技能與面試要點梳理

目錄 一、核心技術深度掌握 (一)Java 語言高階特性 JVM 底層原理剖析 并發編程高級應用 Java 新特性實戰 (二)主流框架與中間件精通 Spring 生態全面掌控 分布式中間件實戰精通 (三)數據庫與存儲優化專家 SQL 與 ORM 高級應用 分庫分表實戰 NoSQL 實戰(Elas…

職場生存發展指南 | 邊界 / 責任 / 社交 / 情緒

注&#xff1a;本文為“職場生存發展”相關合輯。 略作重排&#xff0c;未整理去重。 如有內容異常&#xff0c;請看原文。 職場生存發展指南 | 邊界 / 責任 / 社交 / 情緒 職場如江湖&#xff0c;充滿機遇與挑戰。在單位中立足&#xff0c;需深諳生存智慧——既要守住底線、…

vue3 daterange正則踩坑

<el-form-item label"空置時間" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"開始日期" end-placeholder"結束日期" clearable :editable"fal…

linux中執行腳本命令的source和“.”和“./”的區別

在 Linux 或類 Unix 系統中&#xff0c;source、. 和 ./ 的使用場景各有不同&#xff0c;以下詳細介紹何時使用它們&#xff1a; 命令用途適合場景source和“.”等效。腳本在當前 shell 環境中執行并影響當前 shell 的狀態和環境變量 1. 加載環境變量配置文件&#xff0c;無需…

games101 hw1

原理 背景 將三維空間中一個旋轉的三角形&#xff0c;顯示在屏幕上。 假設三角形初始點位為 v0(2.0, 0.0, ?2.0), v1(0.0, 2.0, ?2.0), v2(?2.0, 0.0, ?2.0), 你需要將這三個點的坐標變換為屏幕坐標并在屏幕上繪制出對應的線框三角形。 mvp AI回答&#xff1a; 在計算機…

Mybatis逆向工程詳解(附源碼文件)動態創建實體類、條件擴展類、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的學習進度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步楊帆旗航。 那么接下來就給大家出一期有關 Mybatis 逆向工程的教學&#xff0c;希望能對大家有所幫助&#xff0c;也特別歡迎大家指點不足之處&#xff0c;小生很樂意接受正確的建議&…