999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Qt純代碼編寫軟件的方法實(shí)例

2020-11-10 04:38:45段振虎
電腦知識(shí)與技術(shù) 2020年27期

摘要:在工程建設(shè)過程當(dāng)中,有時(shí)需要使用許多數(shù)學(xué)公式計(jì)算出相應(yīng)的數(shù)據(jù),然而有一些數(shù)學(xué)公式計(jì)算起來比較麻煩,同時(shí)可以使用軟件開發(fā)工具編寫相應(yīng)的軟件來解決這個(gè)問題。使用Qt即可以可視化編寫軟件,也可以純代碼編寫。為明了編寫軟件過程中所用思想、處理過程、操作方法,該文舉例介紹使用純代碼編寫軟件。首先在Qt的安裝目錄下新建一文件夾,再在此目錄下新建四個(gè)文本文件,編寫相應(yīng)代碼后重命名文本文件為頭文件或者C++文件,然后在命令行輸入命令,最后生成相應(yīng)的軟件。

關(guān)鍵詞:Qt;純代碼;編寫軟件;實(shí)例

中圖分類號(hào):TP311.5 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2020)27-0072-03

開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):

Qt是1994年成立的總部位于挪威奧斯陸的奇趣科技公司(Trolltech)提供的跨平臺(tái)C++圖形界面應(yīng)用程序開發(fā)框架[1]。它最初由Haavard Nord(Trolltech的CEO)和Eirik chambe-Eng(Trolltech的總裁)開發(fā)[2]。當(dāng)時(shí)這個(gè)工具之所以取名為Qt,是因?yàn)樵贖aavard的Emacs字體中,字母Q看起來非常漂亮;而字母t的靈感則來源于當(dāng)時(shí)的另一個(gè)工具Xt(X toolkit)的取名[3]。2008年Qt被Nokia公司收購(gòu),2012年8月Qt軟件業(yè)務(wù)出售給芬蘭IT服務(wù)公司Digia[4]。Qt支持多種平臺(tái),如MS Windows、Linux/U nix、Mac OS及Android、iOS、Windows 8(WinRT)、Black-Berry 10、QNX、VxWorks、嵌入式Linux等移動(dòng)設(shè)備和嵌入式平臺(tái)[5]。Qt強(qiáng)有力地支持著來自70多個(gè)行業(yè)中的主要企業(yè)開發(fā)了數(shù)以百萬計(jì)的產(chǎn)品,也是財(cái)富500強(qiáng)企業(yè)前10個(gè)企業(yè)中的5個(gè)所選擇的開發(fā)技術(shù)[6]。本文使用的是Windows 7桌面平臺(tái),Qt版本為Qt5.6.1.Qt5.6.1的下載與安裝、設(shè)置構(gòu)建套件、環(huán)境變量設(shè)置可分別參照文獻(xiàn)[15]正文第2-3頁、第6頁、第19 - 21頁。

1 窗口設(shè)計(jì)

根據(jù)需要確定出窗口尺寸,需要嵌入哪些窗口部件,部件位置。部件位置是指部件左上方那個(gè)點(diǎn)的橫坐標(biāo)與縱坐標(biāo)。以根據(jù)掘進(jìn)斷面面積S和巖石堅(jiān)固性系數(shù)f估算炮眼數(shù)目N公式為例編制一炮眼數(shù)估算器,其窗口如圖1所示。

根據(jù)掘進(jìn)斷面面積S和巖石堅(jiān)固性系數(shù)f估算炮眼數(shù)目N公式如(1)[7]所示:

2 代碼編寫

假設(shè)Qt安裝在E盤中,在E:\Qt中新建文件夾BINumEst(Blasthole number estimation縮寫),然后在其中新建四個(gè)文本文件,編寫相應(yīng)代碼后分別保存為ui_widegt.h、widegt.h、widegt.cpp.main.cpp。

在ui_widegt.h中添加的代碼如下:

#ifndef UI_WIDEGT_H//與下面”endif”成對(duì)出現(xiàn),檢查名為”ui_widegt'的頭文件是否被定義過

#defme UI_WIDEGT_H//定義名為”ui_widegt”的頭文件

#include //定義UI_WIDEGT_H需要調(diào)用的頭文件

#include

#include< QtWidgets/QApplication>

#include< QtWidgets/QButtonGroup>

#include< QtWidgets/QHeaderView>

#include< QtWidgets/QLabel>

#include< QtWidgets/QLineEdit>

#include< QtWidgets/Q PushButton>

#include

QT_BEGIN_NAMESPACE//開始宏[8]30

class Ui_Widegt//定義名為”Ui_Widegt”的類

{

public:

QLabel *label_1;//定義QLabel類的對(duì)象指針

QLabel *label_2;

QLabel *label_3;

QLineEdit *lineEdit_l;//定義QLineEdit類的對(duì)象指針

QLineEdit *lineEdit_2;

QLineEdit *lineEdit_3;

QPushButton *pushButton;//定義QPushButton類的對(duì)象指針

void setupUi(QWidget *Widegt)//定義一個(gè)生成界面的函數(shù)

if (Widget->obj ectName O.isEmptyO)

Widget->setObj ectName(QStringLiteral(' Widget”));ll如果對(duì)象名為空,將對(duì)象名設(shè)置為”Widegt"

Widegt->resize(210, 210);//設(shè)置窗口的寬和高

QFont font;//新建字體

font. setFamily(QStringLiteral(" Cambria Math"));//字體的種類為”Cambria Math"

font.setPointSize(18); 11字體的大小為18

label_l= new QLabeI(Widegt);//新建窗口部件,(Wide-gt說明部件在創(chuàng)建的對(duì)象Widegt的窗口內(nèi)

label_l->setObj ectName(QStringLiteral ("Iabel_l”));//令部件的對(duì)象名為”label_l"

label_l->setGeometry(QRect(30, 20, 26, 30》;//確定音B件的橫坐標(biāo)、縱坐標(biāo)、寬、高

label_l->setFont(font);//新建的部件使用設(shè)置好的font字體

label_2= new QLabel(Widegt);

label_2->seto bj ectName(QStringLiteral("Iabel_2”));

label_2->setGeometry(QRect(30, 60, 26, 30》;

label_2->setFont(font);

label_3= new QLabeI(Widegt);

label_3->setObjectName(QStringLiteral( 'labeL3”));

labeL3->setGeometry(QRect(30, 100, 26, 30》;

labeL3->setFont(font);

lineEdit_l= new QLineEdit(Widegt);

lineEdit_l->setObj ectName(QStringLiteral("Iine-EdiL1“));

lineEdit_l->setGeometry(QRect(60, 20, 120, 30》;

lineEdit_l->setFont(font);

lineEdit_2= new QLineEdit(Widegt);

lineEdit_2->setObj ectName(QStringLiteral(' 'line-EdiL2”));

lineEdit_2->setCeometry(QRect(60, 60, 120, 30》;

lineEdit_2->setFont(font);

lineEdit_3= new QLineEdit(Widegt);

lineEdit_3->setObj ectName(QStringLiteral(' 'Iine-Edit_3”));

lineEdit_3->setGeometry(QRect(60, 100, 120, 30));

lineEdit_3->setFont(font);

pushButton= new QPushButton(Widegt);

pushButton->setObj ectName(QStringLiteral("pushBut-ton“));

pushButton->setC eometry(QRect(75, 150, 60, 30》;

pushButton->setFont(font);

retranslateUi(Widget);//對(duì)Widegt調(diào)用能對(duì)窗口內(nèi)的字符串進(jìn)行編碼的函數(shù)

QMetaObject:: connectSlotsByName(Widget);//調(diào)用了QMetaObject類的connectSlotsByName0靜態(tài)函數(shù),使得窗口中的部件可以實(shí)現(xiàn)按對(duì)象名進(jìn)行信號(hào)和槽的關(guān)聯(lián)[8po

)//setupUi

void retranslateUi(QWidget *Widget)//定義retranslateUi0函數(shù)

{

Widget->setWindowTitle(QApplication:: translate(' 'Wid-get”,”Widget", 0》;//設(shè)置窗口標(biāo)題為”Widegt”

label_l->setText (QApplication:: translate("Widget",”f.”,0》;//設(shè)置標(biāo)簽label_l顯示字符串”f.”

label_2->setText(QApplication:: translate("Widget", "S:“,0》;//設(shè)置標(biāo)簽labeL2顯示字符串”s:"

label_3->setText(QApplication:: translate("Widget", "N:”,0》;//設(shè)置標(biāo)簽label_3顯示字符串”N:"

pushButton->setText(QApplication:: translate(' Widget",”\350\256\241\347\256\227", 0》;設(shè)置按鈕pushButton顯示字符串”計(jì)算”,字符串”\350\256\241\347\256\227”是”計(jì)算”的UTF-8編碼

1,/retranslateUi

);

namespace Ui(//定義了一個(gè)命名空間Uic8]30,在其中又定義了一個(gè)繼承自Ui_Widegt類的Widegt類

class Widegt: public Ui_Widegt{};

)//namespace Ui

QT_END_NAMESPACE//結(jié)束宏[8]30

#endif//UI_WIDEGT_H

向widegt.h文件中添加如下代碼:

#ifndef WIDEGT_H//與下面”endif”成對(duì)出現(xiàn),檢查名為”widegt”的頭文件是否被定義過

#define WIDE GT_H//定義名為”widegt'的頭文件

#include //引用QWidget類頭文件

namespace Ui(//定義了一個(gè)命名空間Ui,在其中又定義了一個(gè)繼承自Ui_Widegt類的Widegt類

class Widegt;

class Widegt:public QWidget//定義公共繼承QWidget類的Widget類

{

Q_OBJECT//定義了Q_OBJECT宏,擴(kuò)展了普通C++類的功能[9]36

public:/,聲明Widget類的公有成員

explicit Widegt(QWidget *parent= 0);//是顯示構(gòu)造函數(shù),參數(shù)是用來顯示父窗口的,默認(rèn)是沒有父窗口的[9]36

-Widegt0;//聲明析構(gòu)函數(shù)

private slots: ll定義Widget類的私有槽

void on_pushButton_clicked();

private://定義Widget類的私有成員

Ui::Widegt *ui;,/創(chuàng)建Widget類的對(duì)象指針

};

#endif//WIDGET_H

往widegt.cpp文件添加如下的代碼:

#include”widegt.h”//調(diào)用widegt.h頭文件

#include”ui_widegt.h”//調(diào)用ui_widegt.h頭文件

#include//調(diào)用math.h頭文件,因?yàn)橄旅嫘枰褂闷渲械膒ow0函數(shù)

Widegt:: Widegt(QWidget *parent)://Widegt類中的構(gòu)造函數(shù)

QWidget(parent),

ui(new Ui::Widegt)//在Ui中新建Widegt類對(duì)象,名為Ul

{

this->setMaximumSize(210,210);//新建的窗口最大尺寸為2lOx210

this->setMinimumSize(210,210);//新建的窗口最小尺寸為2lOx210

ui->setupUi(this); ll令this代表新建的窗口

Widegt::-Widegt() /fWidegt類中的析構(gòu)函數(shù)

{

delete ui; ll銷毀對(duì)象Ul

void Widegt:: on_pushButton_clicked0//定義與按鈕push-Button相關(guān)聯(lián)的模塊

{

//定義double型變量f,將輸入lineEdit_l的數(shù)字轉(zhuǎn)換成double型再賦值給f

double f=ui->lineEdit_l->textO.toDouble0;

,/定義double型變量S,將輸入lineEdit_2的數(shù)字轉(zhuǎn)換成double型再賦值給S

double S=ui->lineEdit_2->textO.toDouble0;

//定義double型變量N,將傳給lineEdit_3的數(shù)字轉(zhuǎn)換成double型再賦值給N

double N=ui->lineEdit_3->textO.toDouble();

N=3.3*pow《f*S*S),1.0/3); 11根據(jù)掘進(jìn)斷面面積和巖石堅(jiān)固性系數(shù)估算炮眼數(shù)目公式

//將以上公式計(jì)算出來的N值傳送給lineEdit_3

ui->lineEdit_3->setText(QString:.number(N》;

在main.cpp文件里添加以下代碼:

#include”widegt.h”//調(diào)用widegt.h頭文件

#include //調(diào)用QApplication類

int main(int argc。char *argvD)//因?yàn)镼t程序可以接受命令行參數(shù),所以它需要argc和argv兩個(gè)參數(shù)[9126

{

QApplication a(argc,argv);//新建QApplication類對(duì)象

Widegtw;//新建Widegt類對(duì)象

w.setWindowTitle(QObject::tr(”炮眼數(shù)估算器”));//設(shè)置窗口的標(biāo)題為”炮眼數(shù)估算器”

w.show0;//使窗口顯示出來

return a.exec0;//執(zhí)行指令

3 在命令行編譯軟件

首先用鼠標(biāo)左鍵單擊順序如下:“開始”一“所有程序”一“Qt 5.6.1”一“5.6”一“MinGW 4.9.2 (32-bit)'一“Qt 5.6 for Desk-top (MinGW 4.9.2 32 bit)'。之后命令行窗口打開,其次按以下順序輸入命令:“cd E:\Qt\BINumEst”一“qmake -project”(輸入此命令后,在BINumEst目錄中已經(jīng)生成了BINumEst.pro文件。下面使用記事本打開該文件,然后在最后面添加如下一行代碼:greaterThan(QT_MAJOR_VERSION, 4): QT+=widgets[10])→“qmake”→“mingw32-make"_→cd release"→“BINumEst. exe”。最后BINumEst.exe可執(zhí)行文件在BINumEst目錄中的release目錄中生成,炮眼數(shù)估算器窗口彈出。軟件的發(fā)布參見文獻(xiàn)[10]第21頁。

4 結(jié)束語

可視化編寫軟件方便、快捷,同時(shí)使用純代碼編寫軟件能更好地理解編寫軟件過程中所用思想、處理過程、操作方法,對(duì)深入學(xué)習(xí)Qt很有幫助。在編寫代碼過程中,需注意命名文件不能用中文,否則會(huì)出錯(cuò)。若需要了解生成pro工程文件里的代碼,可以參見文獻(xiàn)[10]第25頁與第40頁,亦可參見文獻(xiàn)[9]第38頁與第39頁。

參考文獻(xiàn):

[1]殷立峰.Qt C++跨平臺(tái)圖形界面程序設(shè)計(jì)基礎(chǔ)[M].北京:清華大學(xué)出版社,2014.

[2]陳志發(fā),王苑增,嵌入式Qt實(shí)戰(zhàn)教程[M].北京:電子工業(yè)出版社,2015.

[3]霍亞飛,程梁.Qt 5編程入門[M].北京:北京航空航天大學(xué)出 版社,2015.

[4)鮑忠貴,王濤,陳凌暉.Qt編程快速入門[M].北京:清華大學(xué)出版社,2016.

[5]金大彌.Qt 5開發(fā)實(shí)戰(zhàn)[M].張紅艷譯,北京:人民郵電出版社,2015.

[6]安曉輝.Qt on Android核心編程[M].北京:電子工業(yè)出版社,2015.

[7]許建聰,地下工程施工技術(shù)[M].北京:中國(guó)建筑工業(yè)出版社,2015.

[8]霍亞飛.Qt Creator快速入門[M].北京:北京航空航天大學(xué)出版社,2012.

[9]霍亞飛.Qt Creator快速入門[M].2版.北京:北京航空航天大學(xué)出版社,2014.

[10]霍亞飛.Qt Creator快速入門[M].3版,北京:北京航空航天大學(xué)出版社,2017.

【通聯(lián)編輯:王力】

作者簡(jiǎn)介:段振虎(1986-),男,重慶人,工程師,本科,主要從事土木工程研究。

主站蜘蛛池模板: 国产精品久久国产精麻豆99网站| 日韩福利在线视频| 国产在线视频欧美亚综合| 成人福利在线视频| 日韩午夜片| 亚欧成人无码AV在线播放| 九色综合伊人久久富二代| 色天天综合| 亚洲精品视频网| 一级看片免费视频| 欧美一区二区福利视频| 色婷婷在线播放| 亚洲三级成人| 国产亚洲男人的天堂在线观看| 日韩欧美综合在线制服| 亚洲第一区在线| 精品国产电影久久九九| 2022国产91精品久久久久久| 美美女高清毛片视频免费观看| 亚洲精品成人福利在线电影| 夜夜爽免费视频| 中日韩一区二区三区中文免费视频| 天天做天天爱夜夜爽毛片毛片| 2021国产v亚洲v天堂无码| 日韩国产精品无码一区二区三区| 国产视频你懂得| 亚洲国产欧美自拍| 成人年鲁鲁在线观看视频| 欧美日韩在线国产| 欧美日韩久久综合| 国产麻豆精品在线观看| 黄色三级网站免费| 亚洲午夜福利在线| 亚洲伊人电影| 手机精品视频在线观看免费| 99热在线只有精品| 国产麻豆91网在线看| 国产亚洲一区二区三区在线| 亚洲一区二区三区香蕉| 最新无码专区超级碰碰碰| 九九热免费在线视频| 国产成人高清精品免费5388| 五月激情婷婷综合| 成人免费视频一区二区三区 | 国产精品免费电影| 精品亚洲国产成人AV| 国产精品无码影视久久久久久久| 另类综合视频| 9啪在线视频| 免费无码一区二区| 亚州AV秘 一区二区三区| 乱人伦中文视频在线观看免费| 国产精品2| 91色在线观看| 国产成人精品亚洲77美色| 高清不卡毛片| 欧美五月婷婷| 亚洲成人精品在线| 国禁国产you女视频网站| 波多野结衣在线se| 五月天久久综合| 色噜噜综合网| 91色国产在线| 人人看人人鲁狠狠高清| 美女无遮挡拍拍拍免费视频| 国产美女精品人人做人人爽| 欧美成人精品在线| 亚洲三级视频在线观看| 最新痴汉在线无码AV| 97视频精品全国在线观看| 国产美女精品一区二区| 91久久夜色精品国产网站| 国产精品污污在线观看网站| 精品午夜国产福利观看| 99视频在线精品免费观看6| 综合天天色| 国产在线一二三区| 青青国产成人免费精品视频| 91视频区| 香蕉eeww99国产精选播放| 91麻豆精品国产91久久久久| 日韩不卡高清视频|