一、Qt初嘗試,做一個QT計算器《QT 入門到實戰》

學習目標

  • 了解 qt 的基本信息
  • 了解 qt 的下載及安裝
  • 了解創建一個基本 qt 項目的流程
  • 了解信號與槽
  • 通過示例了解信號與槽的設置與編寫
  • 了解控件添加的方式
  • 了解控件如何使用代碼獲取其文本
  • 了解控件如何使用代碼設置其文本
  • 使用 connect 自定義信號與槽
  • 了解使用樣式修飾控件外觀
  • 了解使用代碼清空控件文本
  • 學習使用Qt 編寫一個四則算術計算器

注:本章中使用的一些方法方法是為了簡單的了解一下概念性質,例如在多個槽函數時使用的方法并不是簡便的,簡便的方法在之后的學習中將會進行講解。

一、簡單了解 Qt 及下載安裝

1.1 簡單了解 Qt

qt 是 C++ 的圖形用戶工具,是一個跨平臺的用戶界面解決方案;Qt 幾乎支持所有的系統平臺,并且是面向對象的。

Qt 的跨平臺是非常強大的,例如可支持 win下的 XP、Vista、Win7/8/10 等 Windows 系統,并且對于Linux 下 X11、HP-UX、BSD/OS 又或是 嵌入式 Linux 平臺 等都是支持的,甚至是 Mac 平臺也支持。

1.2 Qt 下載及安裝

Qt 分為商業版以及開源版,在此我們使用開源版本,開源版本是免費的。

Qt 開源版本的下載鏈接為 https://www.qt.io/download,打開鏈接中,往下滑動頁面,找到開源版本下載板塊:

在這里插入圖片描述

點擊后,將會跳轉到一個頁面,往下拉頁面,點擊下載 qt 二進制在線安裝:

在這里插入圖片描述

之后將會跳轉到一個頁面,并且會根據你的系統推薦你使用某個版本:

在這里插入圖片描述

最后點擊 Download 即可下載,安裝步驟操作簡單不再贅述,以上介紹開源版下載方式是因為部分同學認為Qt 是收費的,所以在此介紹開源版的下載方法(可能由于時間問題網頁更新會導致下載“路徑”不同)。

1.3 項目示例

Qt 作為一款優秀的 GUI 解決方案許多經典流行的應用使用了 Qt 進行開發,例如 WPS:

在這里插入圖片描述
谷歌地球:

在這里插入圖片描述

VirtualBox 虛擬機:

在這里插入圖片描述

Linux 桌面系統等。

二、Qt Creator 界面介紹 及 第一個Qt 程序創建

2.1 簡單的第一個 qt 程序

Qt 界面中自帶了很多項目示例,可以通過 查看 Qt 示例學習經典項目的開發:

在這里插入圖片描述
Qt 自帶了教程,查看教程可以觀看資料,不過是英文的,有英文能力的同學推薦閱讀:

在這里插入圖片描述
點擊創建項目將會彈出一個窗口,選擇對應的模板將會可以創建不同的項目:

在這里插入圖片描述
在以上所選擇的模板中最右側是對應的模板介紹:

在這里插入圖片描述
該模板是創建一個桌面 Qt 程序,以及包含了一個用于設計的 Qt 窗口。

點擊選擇可以進入下一步,在下一步窗口中選擇項目名稱以及對應項目存放的位置:
在這里插入圖片描述
在此需要注意,名稱和路徑不能有中文,接著一直下一步,知道出現語言選擇時在此你可以選擇中文:

在這里插入圖片描述

接著一直下一步進行操作即可,完成后將會彈出所創建的項目的基本內容:

在這里插入圖片描述

接著,點擊運行將會出現一個 空窗口:

在這里插入圖片描述

三、信號與槽

3.1 信號與槽的基本示例

信號在 Qt 中指的是一個事件,例如當你點擊一個按鈕時會觸發點擊的事件,也就是信號,觸發完畢后你需要某一個“動作”對其作出響應,或者說當收到信號后將會執行一些動作,而這個動作則是槽,又或者說是一個對信號響應的代碼塊。

此時我們可以通過一個例子來簡單的理解一下信號與槽的概念,點擊創建項目,最后創建一個 Qt Widgets 的 App 應用:

在這里插入圖片描述
隨后指定文件目錄后一直點擊下一步即可:
在這里插入圖片描述

接下來點擊 mainwindow.ui 文件:

在這里插入圖片描述
點擊之后將會出現一個設計窗口:

在這里插入圖片描述
這個窗口如圖所示,左側是對應的基本空間區域,右側是對應的設計窗口。我們可以通過拖拽左側的控件到右側的設計窗口之上,使當前 window 添加對應的控件,例如:

在這里插入圖片描述

此時可以點擊整個 Qt creator 左下角的運行按鈕對整個項目編譯運行:

在這里插入圖片描述

運行之后,將會出現一個窗體程序,這個窗體程序在界面之上有一個 pushbutton:

在這里插入圖片描述

為了實現信號與槽這個概念,我們可以再拖拽一個 edit 控件到窗體之上,由于一個 edit 是一個可編輯的控件,那么必然是輸入 input Widgets,我們在 input Widgets 控件之下可以找到對應的 line Edit:

在這里插入圖片描述
此時拖拽這個控件到窗體之上:

在這里插入圖片描述
接著我們開始試驗信號與槽。我們右鍵 PushButton,將會出現跳轉到槽的選擇項:

在這里插入圖片描述

此時將會出現一個信號選擇框,我們可以選擇在什么情況下觸發這個槽函數:

在這里插入圖片描述

在這里選擇 clicked 指在點擊時觸發這個槽函數。選擇完畢后, qt creator 將會跳轉窗口到一個編輯頁,此時編輯頁中出現的 on_pushButton_clicked 則是點擊 pushButton 按鈕后將會跳轉到的槽函數:

在這里插入圖片描述

那此時我們該在這里編寫什么代碼呢?此時我們可以編寫一些動作,例如直接將當前按鈕的文本改變成 lineEdit 空間所輸入的文本,那么就可以很好的演示當點擊按鈕后執行代碼后界面所產生的反應。

此時我們可以編寫代碼:

void MainWindow::on_pushButton_clicked(){QString inputText=ui->lineEdit->text();ui->pushButton->setText(inputText);
}

其中 QString inputText=ui->lineEdit->text(); 表示新建一個 QString 類型的 inputText 變量用來獲取對應輸入框所輸入的內容;獲取輸入框需要指定到窗口上的某個空間,我們需要通過 ui 進行獲取,ui-> 指 ui 上的某個空間,由于在窗體上的輸入框名稱默認為 lineEdit 所以直接寫成 lineEdit 即可,查看 控件名稱 直接點擊控件后可在 Qt creator 右上角進行查看:

在這里插入圖片描述

此時代碼為 ui->lineEdit 表示指定到了某個元素,而最后的 ->text() 則表示獲取當前控件的文本內容,獲取到文本內容后存儲到 QString 類型的 inputText 變量即可。

此時已經獲取到了對應的輸入框內容,那么接下來需要把對應輸入框的文本設置到 pushButton 之上即可,設置一個控件的文本也需要使用 ui 指定到某一個控件,那么獲取 PushButton 控件代碼則是 ui->pushButton,那么設置文本則是 setText 方法,在 setText 方法中傳入對應的文本值即可,所以最終代碼寫成 ui->pushButton->setText(inputText);,當然你可以直接寫成 ui->pushButton->setText(ui->lineEdit->text());

此時完成了代碼編寫后,我們可以運行程序,運行成功將會出現一個窗體界面,此時在窗體界面中輸入 233:

在這里插入圖片描述

接著點擊 PushButton 按鈕,點擊后 PushButton 按鈕的文本將會改變成你所輸入的值:

在這里插入圖片描述

3.2 自定義信號與槽

信號與槽不止可以通過默認方式進行生成和編寫,還可以通過自定義的方式自定義信號與指定處理的槽函數。

我們自定義的信號與槽是通過 connect 函數進行設置,例如如下代碼:

connect(ui->lineEdit,SIGNAL(returnPressed()),this,SLOT(on_pushButton_clicked()));

以上代碼中 connect 函數接收的第一參數為你需要指定信號與槽的控件,第二個參數則是表示發送什么信號,就像我們在設計窗口中右鍵某一個控件,隨后通過鼠標點擊指定對應的信號;在這里 SIGNAL(returnPressed()) 中 SIGNAL 表示是一個宏函數,需要傳入對應的事件,其 returnPressed 則表示是 enter 按下確認的事件,接下來的 this 則是表示當前類處理這個信號,最后一個則是槽,SLOT 需要傳入對應處理信號的函數即可。

由于自定義信號與槽的方式有很多種,在這里先簡單講解一種,之后其他的處理方式將會補充講解。

最后我們點擊運行,隨后在 lineEdit 中輸入對應的文本,enter 鍵后按鈕也會發生其文本的改變:

在這里插入圖片描述

四、實現簡單四則計算器

4.1 界面設計

在這一節中,我們使用 qt 制作一個簡單的四則運算器,學習一下界面創建與修飾。

首先創建好項目,其次打開 ui 文件,進入到設計窗口之中:

在這里插入圖片描述
在一個計算機中,數字的按鍵是必不可少的,我們拖動對應的按鈕到設計窗口之上,最后點擊按鈕,在右下角的屬性設置之上改變其寬高:

在這里插入圖片描述

接著我們更改文本后,按住鍵盤 ctrl 拖動控件,將會直接復制出一個新的控件:

在這里插入圖片描述

接著我們拖動出多個對應的按鈕,并且更改其文本:

在這里插入圖片描述

此時我們發現這些按鈕的排列并不整齊,我們可以選中所有的按鈕,接著點擊設計窗口頂部的柵格布局:

在這里插入圖片描述
點擊之后整個按鈕將會自動進行規整的排列。

接著,我們點擊右上角,給每一個按鈕起名,方便我們接下來的調用:

在這里插入圖片描述

接著我們添加兩個 eidt 到窗口之上,并且設置號大小和位置:

在這里插入圖片描述

當然也要更好對應的控件名,一個用于顯示公式,還有一個用于顯示最終的計算結果:

在這里插入圖片描述
接著設置整個窗體大小的寬高:

在這里插入圖片描述
設置完畢后我們可以給這些控件對應的樣式。

4.2 添加樣式

首先我們可以給這些控件設置邊框為 none 去掉對應的邊框,主要是把 edit 的邊框去掉使其較為美觀。右鍵在右上角的對象樹上,選擇改變樣式:

在這里插入圖片描述

接著在彈出來的樣式表上添加樣式修飾:

在這里插入圖片描述

*{border:none;background-color: rgb(234, 234, 234);
}

其中 * 表示給所有的對象設置樣式,其樣式編寫在 * 之后的花括號之中,border 設置為 none 表示邊框為 none 則表示不需要邊框,background-color 表示設置對應的背景色,用 rgb 色進行設置。輸入完畢后點擊應用,當前的窗體如下:

在這里插入圖片描述
接著我們可以設置對應的 按鈕樣式,例如設置 QPushButton 的背景色以及對應的字體大小、是否加粗以及字體,可以使用以下樣式:

QPushButton{background-color: rgb(255, 255, 255);font:bold 11pt '微軟雅黑';
}

在這里插入圖片描述

font:bold 11pt '微軟雅黑'; 表示設置字體,bold 表示字體加粗,11pt 表示字體的大小、最后則是對應的字體。

若此時我想對應的設置乘號、除號、加號、減號這些運算符號的不同,則可以通過樣式指定控件設置不一樣的樣式,例如:

在這里插入圖片描述

QPushButton#add,#subtraction,#division,#multiplication{background-color: rgb(56, 208, 203);
}

此時設置樣式則需要先指定某個類型的組件,隨后使用 # 在末尾街上控件名稱,隨后逗號分隔即可指定某個控件設置樣式。

此時運行程序,我們發現鼠標移動到某個按鈕上時沒有任何反應,若想使按鈕有反應則需要對應的設置 hover 時按鈕的樣式,hover 則是指對應的鼠標懸浮上去后,按鈕發生的改變,設置這個樣式很簡單,只需要指定某個類型的控件后,在其后使用一個冒號 :hover 即可指定一個樣式,例如:

QPushButton:hover{background-color: rgb(221, 221, 221);border:1px solid rgb(185, 185, 185);
}

在這里插入圖片描述

此樣式表示當鼠標移動上去后改變其對應的背景色以及邊框顏色,此時鼠標移動上去將會使按鈕有反應,并不會過于死板。

此時效果如下:

在這里插入圖片描述

但此時我們發現,設置過指定控件的樣式例如加減乘除并沒有移動上去后發生樣式改變,這時需要再針對這些控件設置一下 hover 樣式:

QPushButton#add:hover,#subtraction:hover,#division:hover,#multiplication:hover{background-color: rgb(221, 221, 221);border:1px solid rgb(185, 185, 185);
}

效果如下:

在這里插入圖片描述

4.3 功能設計

設計功能我們需要設置一個全局變量用于記錄通過按鈕生成的四則運算公式,在此我們設置在頭文件之中:

在這里插入圖片描述
接著我們給每個按鈕手動設置一個槽函數:

在這里插入圖片描述
首先我們設置數字 7 按鈕的槽函數:

void MainWindow::on_btn7_clicked()
{expression+="7";ui->show->setText(expression);
}

在這里插入圖片描述

在這個槽函數中設置 expression 全局變量記錄用戶輸入了7,隨后設置 show edit 的文本為 expression;既然 expression 是用于對應的記錄公式,那么我們就可以把所有的數字都設置類似于數字 7 的形式往 expression 中添加對應的拼接,并且加減乘除法按鈕也要完成該操作:

在這里插入圖片描述

最后運行一下程序,發現輸入點擊對應按鈕后將會出現對應的公式:

在這里插入圖片描述
但是我們發現由于是 eidt 對象,可以用戶輸入,我們可以設置其 edit 的屬性 readonly 為 true 即可:

在這里插入圖片描述
也可以設置對應的水平對齊為右:

在這里插入圖片描述
最后我們得到了這個公式,我們只需要通過計算器代碼即可求出對應值,由于這是 C/C++ 的內容在此就不再贅述,我們此時直接右鍵等于號,設置其槽函數,并且賦值以下代碼即可(代碼來源于網絡):

 QStack <int> OPND;  // Operand stackQStack <char> OPTR;  // Operator stackOPTR.push('#');//char ss[2]="#";//尾部有\0char s[maxn];char path[50];QString str = expression;QByteArray ba = str.toLocal8Bit();memcpy(s,ba.data(),ba.size()+1);//加1是為了最后的終結符,否則轉換回來的時候不知道什么時候截止QString str2;str2 = QString::fromLocal8Bit(s);strcat(s,ss);// 運算式尾部加 "#"--結束運算符char c=s[0];int k=1;while(c!='#'||OPTR.top()!='#'){  //表達式未讀完或者運算未完int y=0;if(c>='0'&&c<='9'){while(c>='0'&&c<='9'){  // 讀入連續的數字y=y*10+(c-'0');c=s[k++];}OPND.push(y);  // 把讀進的數字入數字棧}else{switch(Procede(OPTR.top(),c)){case'<':  //棧頂元素優先權低OPTR.push(c);c=s[k++];break;case'=':OPTR.pop();  // 脫括號c=s[k++];  // 讀入下一個字符break;case'>':  //退棧并將運算結果入棧char x=OPTR.top();OPTR.pop();int m=OPND.top();OPND.pop();int n=OPND.top();OPND.pop();OPND.push(Operate(m,n,x));break;}}}ui->res->setText(QString::number(OPND.top()));

當然,你直接復制這個代碼將會報錯,此時需要再復制幾個函數以及添加頭文件,先復制幾個函數:

const int maxn=110;
char priority[7][7]={{'>','>','<','<','<','>','>'},{'>','>','<','<','<','>','>'},{'>','>','>','>','<','>','>'},{'>','>','>','>','<','>','>'},{'<','<','<','<','<','=','0'},   // 此行"("=")"表示左右括號相遇,括號內運算已完成{'>','>','>','>','0','>','>'},{'<','<','<','<','<','0','='}    // "=" 表示整個表達式求值完畢};                               //  "0"表示不可能出現這種情況 ( 語法錯誤 )//Precede 用于判斷運算符棧棧頂運算符 a1 與讀入運算符 a2 之間的優先關系函數
char Procede(char a,char b){   // 建立 pre[][] 到 運算符間的映射關系int i,j;switch(a){case'+':i=0;break;case'-':i=1;break;case'*':i=2;break;case'/':i=3;break;case'(':i=4;break;case')':i=5;break;case'#':i=6;break;   // # 是表達式的結束符}switch(b){case'+':j=0;break;case'-':j=1;break;case'*':j=2;break;case'/':j=3;break;case'(':j=4;break;case')':j=5;break;case'#':j=6;break;}return priority[i][j];
}int Operate(int m,int n,char x){if(x=='+')return m+n;if(x=='-')return n-m;if(x=='*')return m*n;if(x=='/')return n/m;
}

隨后需要對應的添加一個頭文件 QStack:

#include <QStack>

最后若你的命名跟我的不符,你需要修改字符串轉字符數組時的公式變量命名:

在這里插入圖片描述

以及最后顯示值時指定改變某個控件:

在這里插入圖片描述

最終結果如下:

在這里插入圖片描述

總結

本章節主要介紹了 qt 的一些基本信息,并且使用 qt 創建一個基本的項目,了解 qt 項目創建的基本流程;在此基礎上學習了信號與槽,并且使用了對應的小示例改變了按鈕的文本,在基礎信號與槽的基礎上,通過 connect 實現了自定義的信號與槽指定,完成了使用鍵盤響應對應的槽函數;最后通過學習如何制作一個簡單的四則運算程序,在其中了解了 UI 界面的布局制作、限制其大小、以及設置對應的樣式,最終也實現了對應的按鈕及計算。

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

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

相關文章

VS C#語言獲取輸入名稱的漢語拼音簡拼碼和全拼碼完整案例教程

結果預覽: 擴展閱讀: SQL語言獲取拼音碼:SQL Server編寫函數獲取漢字的拼音碼(簡拼) 文章目錄 1. 拼音碼類編寫2. 界面設計3. 前端調用4. 結果展示1. 拼音碼類編寫 打開Visual Studio,新建一個Winform項目,再添加一個類文件,命名為PYM。 鍵入如下代碼: using Syst…

iOS duplicate symbol for architecture arm64 解決辦法

導致這個問題的原因有多種&#xff1a; 1.重復定義了const常量。 2.多個第三方庫同時用到了某個函數庫。 暫時列舉這幾種&#xff0c;以后遇到了其他原因再加。轉載于:https://www.cnblogs.com/zhanglinfeng/p/5987077.html

WPF 實現星空效果

本文經原作者授權以原創方式二次分享&#xff0c;歡迎轉載、分享。原文作者&#xff1a;普通的地球人原文地址&#xff1a;https://www.cnblogs.com/tsliwei/p/6282183.htmlGithub地址&#xff1a;https://github.com/WPFDevelopersOrg/WPFDevelopers效果前陣子看到ay的蜘蛛網效…

data類型的Url的格式

data類型的Url的格式 一、data類型的簡介 所謂"data"類型的Url格式&#xff0c;是在RFC2397中提出的&#xff0c;目的對于一些“小”的數據&#xff0c;可以在網頁中直接嵌入&#xff0c;而不是從外部文件載入。例如對于img這個Tag&#xff0c;哪怕 這個圖片非常非…

C語言試題八十之統計單詞個數

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 終端輸入一…

SSIS 執行變量中的腳步輸出列順序與SQL查詢列順序不同

這個問題是朋友遇到的&#xff0c;做一個SSIS的程序將數據導入到txt。然后再用Oracle的工具導入到Oracle。但是在SSIS中執行變量腳步的時候&#xff0c;發現輸出的列名稱跟查詢的列名稱完全不同。比如Schema_id在查詢的第三列&#xff0c;但是輸出的時候到了第6列。 如圖&#…

【ArcGIS風暴】ArcGIS自定義坐標系統案例教程---以阿爾伯斯投影(Albers)為例

在實際工作中,經常需要進行矢量數據或柵格數據的投影轉換工作,但有時候ArcGIS中恰恰沒有我們需要的坐標系,此時,就需要我們自定義坐標系。本文以阿爾伯斯投影(Albers)為例,講解自定義投影的一般過程及注意事項。 文章目錄 1. 確定投影名稱2. 選擇投影坐標系及修改參數4.…

C語言試題八十一之利用遞歸函數調用方式,將所輸入的5個字符,相反順序打印

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 利用遞歸函…

Unity5 GI與PBS渲染從用法到著色代碼

本文主要介紹Untiy5以后的GI&#xff0c;PBS&#xff0c;以及光源探頭&#xff0c;反射探頭的用法以及在著色器代碼中如何發揮作用&#xff0c;GI是如何影響渲染的&#xff0c;主要分成三個部分&#xff0c;最開始說明PBS需要的材質與相應概念&#xff0c;二是Unity 里相應GI的…

Web前端筆試面試題匯總(轉自github)

前言 本文總結了一些優質的前端面試題&#xff08;多數源于網絡&#xff09;&#xff0c;初學者閱后也要用心鉆研其中的原理&#xff0c;重要知識需要系統學習&#xff0c;透徹學習&#xff0c;形成自己的知識鏈。萬不可投機取巧&#xff0c;只求面試過關是錯誤的&#xff01; …

Blazor University (31)表單 —— 驗證

原文鏈接&#xff1a;https://blazor-university.com/forms/validation/驗證源代碼[1]DataAnnotationsValidator 是 Blazor 中的標準驗證器類型。在 EditForm 組件中添加此組件將啟用基于 System.ComponentModel.DataAnnotations.ValidationAttribute 的 .NET 屬性的表單驗證。…

CSDN,CNBLOGS博客文章一鍵轉載插件 終于更新了!

之前&#xff0c;Shawn Chou等朋友一直建議插件支持cnblogs文章轉載&#xff0c;但一直沒時間修改插件&#xff0c;今天晚上抽時間將插件進行了升級&#xff0c;可以支持 CSDN,CNBLOGS博客文章的一鍵轉載。時間倉促&#xff0c;難免有各種問題&#xff0c;歡迎提出建議&#xf…

ROS2_Control官方資料+運動控制

Getting Started — ROS2_Control: Rolling Dec 2023 documentation Getting Started Edit on GitHub Youre reading the documentation for a development version. For the latest released version, please have a look at Iron. Getting Started? Installation? Binar…

三、教你搞懂漸變堆疊面積圖《手把手教你 ECharts 數據可視化詳解》

注&#xff1a;本系列教程需要對應 JavaScript 、html、css 基礎&#xff0c;否則將會導致閱讀時困難&#xff0c;本教程將會從 ECharts 的官方示例出發&#xff0c;詳解每一個示例實現&#xff0c;從中學習 ECharts 。 ECharts 官方示例&#xff1a;https://echarts.apache.o…

C語言試題八十二之輸入小寫字母,把小寫字母轉換成大寫字母。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 輸入小寫字…

Serv-U服務器的管理3

&#xff18;&#xff0e;編輯&#xff29;&#xff30;訪問規則對于某些擾亂服務器秩序但又不方便刪除其賬戶的用戶&#xff0c;可以利用“編輯&#xff29;&#xff30;訪問規則”允許或阻止特定的&#xff29;&#xff30;訪問。&#xff33;&#xff45;&#xff52;&#…

【ArcGIS風暴】什么是點云?什么是Las數據集?一篇文章告訴你點云數據的奧秘

攝影測量Pix4d等軟件,或激光雷達數據一般都是LAS格式的點云數據,有很大的適用范圍和優點,那么,到底什么是LAS數據集呢,一文告訴你LAS數據集的來龍去脈。 擴展閱讀: 什么是點云?什么是Las數據集?一篇文章告訴你點云數據的奧秘 ArcGIS+CASS點云(.las)數據生成等高線方法案…

試用了多款報表工具,終于找到了基于.Net 6開發的一個了

Part1前言上一個月有一個項目需要用到數據分析&#xff0c;將老板感興趣的數據給他整理成一個面板&#xff0c;方便他實時查看&#xff0c;于是自己了解到了BI,當時我們項目就用了metabase&#xff0c;metabase是一款開源的BI分析工具&#xff0c;開發語言clojureReact為主。就…

4種CSS文字豎排方法

2019獨角獸企業重金招聘Python工程師標準>>> 有時候&#xff0c;我們需要對網頁某個區域的文字豎排&#xff0c;豎向排列&#xff0c;橫向的當然大家都見慣了&#xff0c;對于豎排&#xff0c;一時間找不到思路了&#xff0c;呵呵&#xff0c;其實和橫排一樣簡單&am…

知道這20個正則表達式,能讓你少寫1,000行代碼

正則表達式&#xff0c;一個十分古老而又強大的文本處理工具&#xff0c;僅僅用一段非常簡短的表達式語句&#xff0c;便能夠快速實現一個非常復雜的業務邏輯。熟練地掌握正則表達式的話&#xff0c;能夠使你的開發效率得到極大的提升。 正則表達式經常被用于字段或任意字符串的…