欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)激活碼778899分享:QT5學(xué)習(xí)筆記/順帶學(xué)C++

柚子快報(bào)激活碼778899分享:QT5學(xué)習(xí)筆記/順帶學(xué)C++

http://yzkb.51969.com/

本文的標(biāo)題順序排布不局有普遍性,純粹是我個(gè)人學(xué)習(xí)過程中學(xué)到哪記到哪,可能會(huì)非常跳脫

1.概念解釋

Qt使用C++語法開發(fā),語法上有著C++的特性,或者說Qt是C++的一個(gè)大型拓展庫;但不意味著QT是一種語言,還存在PyQt:使用python開發(fā)的QtQt面向?qū)ο蟮奶匦允怯捎贑++的面向?qū)ο筇匦?/p>

面向?qū)ο缶幊蹋阂环N編程范式,與之對(duì)應(yīng)“面向過程編程”

面向?qū)ο缶幊虒⒊绦虺橄鬄閹讉€(gè)部分包括“對(duì)象”“類”“封裝”等等;

面向?qū)ο笈c面向過程的區(qū)別如下:

對(duì)于炒蛋炒飯,面向過程這樣寫:

1,先炒蛋

2,再炒飯

3,倒在一起炒

4,出鍋

而面向?qū)ο筮@樣寫:

1,抽象出蛋、米飯、人、鍋這幾個(gè)對(duì)象

2,安排蛋這個(gè)對(duì)象其行為需要被炒

3,安排米飯這個(gè)對(duì)象其行為需要被炒

4,安排人這個(gè)對(duì)象其行為需要主動(dòng)去炒

5,安排鍋這個(gè)對(duì)象其行為需要加熱

6,安排被炒后的蛋和米飯需要混在一起再被炒

7,以上6步一起執(zhí)行然后得出蛋炒飯這個(gè)結(jié)果

現(xiàn)實(shí)中炒飯需要考慮先后順序,這里僅舉例說明兩種范式的區(qū)別

QtCreator是方便開發(fā)者開發(fā)Qt的圖形化開發(fā)環(huán)境,本質(zhì)是一個(gè)工業(yè)軟件,除了QtCreator,使用命令行控制臺(tái)也可以直接開發(fā)Qt,只是不方便

2.Qt的編譯/例程

控制臺(tái)編譯Qt的過程:

編寫源代碼 設(shè)置環(huán)境變量:注意需要將使用的編譯器(mingw32)放置在環(huán)境變量列表的最上方, 否則寫完qt后運(yùn)行會(huì)提示無法定位程序輸入點(diǎn)于動(dòng)態(tài)鏈接庫 生成工程文件: 控制臺(tái)輸入?qmake -project , 修改工程文件的最后一行添加?QT += Widget? gui,否則編譯時(shí)會(huì)報(bào)錯(cuò) 生成makefile: 控制臺(tái)輸入?qmake 編譯: 控制臺(tái)輸入?mingw32-make

最基本編譯主函數(shù)結(jié)構(gòu):

#include//用到的Qt定義內(nèi)容均需要添加include

int main(int argc,char *argv[])//argv屬于指針數(shù)組變量,不要忘記[]

{

QApplication app(argc,argv);//固定格式

return app.exec();//主窗口需要永遠(yuǎn)存在,所以exec=程序永遠(yuǎn)執(zhí)行(死循環(huán)

}

Qt最大的作用在于創(chuàng)建圖形化的界面,對(duì)于一個(gè)圖形界面,其文本描述、用戶輸入框、列表、展示的圖片、交互按鈕等,都被稱之為控件

控件有標(biāo)簽、行編輯框、文本編輯框等,都屬于對(duì)象,以windows的運(yùn)行界面為例程,將其復(fù)現(xiàn)

圖中紅框部分均為不同控件對(duì)象,控件與控件之間的排布稱為布局

使用Qt復(fù)現(xiàn)windows的運(yùn)行窗口

#include

#include

#include

#include

//主程序中使用到了Qt定義的控件類型,故在頭文件中需要事先加入對(duì)應(yīng)的include

#include//Qt定義的水平布局,Qt中布局也是一種對(duì)象

#include//垂直布局

#include//窗口對(duì)象,整體窗口和程序?qū)ο驫application不是一回事

int main(int argc,char *argv[])

{

QApplication app(argc,argv);//固定格式

QLabel *infoLabel = new QLabel;//生成一個(gè)新的對(duì)象并被包含在某類中

QLabel *openLabel = new QLabel;

//new申請(qǐng)對(duì)象后返回的是地址,需要用指針去接收地址,所以定義新對(duì)象時(shí)均使用了指針

QLineEdit *cmdLine = new QLineEdit;//行編輯控件,用于用戶輸入行文本

QPushButton *commmitButton = new QPushButton;

QPushButton *cancelButton = new QPushButton;

QPushButton *browseButton = new QPushButton;

infoLabel->setText("input cmd:");//對(duì)上一步創(chuàng)建好的對(duì)象編寫該對(duì)象的行為例如設(shè)置文本

openLabel->setText("OPEN");

commmitButton->setText("commit");

cancelButton->setText("cansel");

browseButton->setText("browse");

//以上調(diào)用的函數(shù)(如setText)均為無參構(gòu)造,故沒有()

QHBoxLayout *cmdLayout = new QHBoxLayout;//創(chuàng)建布局對(duì)象以修改不同控件間的位置

cmdLayout->addWidget(openLabel);

cmdLayout->addWidget(cmdLine);//在剛剛創(chuàng)建的布局對(duì)象中添加需要調(diào)整位置的兩個(gè)控件對(duì)象

QHBoxLayout *ButtonLayout = new QHBoxLayout;

ButtonLayout->addWidget(commmitButton);

ButtonLayout->addWidget(cancelButton);

ButtonLayout->addWidget(browseButton);//按鈕部分也需要水平布局

QVBoxLayout *mainLayout = new QVBoxLayout;//創(chuàng)建垂直布局對(duì)象

mainLayout->addWidget(infoLabel);

mainLayout->addLayout(cmdLayout);//在布局中添加布局,用的函數(shù)略有不同

mainLayout->addLayout(ButtonLayout);

QWidget w;//創(chuàng)建窗口,因?yàn)椴簧婕皡?shù)更改,故不用使用指針

w.setLayout(mainLayout);//設(shè)置主窗口的行為,類似上面的->

w.show();//設(shè)置完主窗口的總體布局還需要讓窗口展示出來

w.setWindowTitle("運(yùn)行");//主題窗口的標(biāo)題

return app.exec();//主窗口需要永遠(yuǎn)存在,所以exec=程序永遠(yuǎn)執(zhí)行(死循環(huán)

}

編寫完后,進(jìn)行控制臺(tái)編譯,以minGw 7.3為例運(yùn)行

控制臺(tái)編譯Qt僅用作了解編譯過程學(xué)習(xí),正常開發(fā)中不會(huì)使用這種方法,效率極低。

3.QtCreator/信號(hào)與槽

3.1QtCreator

創(chuàng)建工程的類選擇中 Qmainwindow 與Qwidget有所區(qū)分,

一般的小窗口屬于Qwidget類,如微信登陸窗口;

帶有菜單的完整界面窗口為Qmainwindow類,如各微信主界面;Qdialog類是一般的對(duì)話框。

QtCreator將Qt程序開發(fā)分為兩類,一類邏輯代碼,一類界面設(shè)計(jì)

在邏輯代碼在“編輯”中開發(fā),編寫軟件項(xiàng)目后臺(tái)的邏輯操作;

界面設(shè)計(jì)在“設(shè)計(jì)”中開發(fā),是純圖形化的設(shè)計(jì)界面,保存為.ui后綴文件,在這個(gè)欄目的操作僅為設(shè)計(jì)定制將要開發(fā)的軟件交互界面,如按鈕擺放位置,窗口大小形狀等,按鈕按下的后續(xù)邏輯響應(yīng)需要用到信號(hào)與槽機(jī)制。

3.2信號(hào)與槽?

對(duì)按鈕或其他動(dòng)作觸發(fā)的響應(yīng)稱為信號(hào),信號(hào)需要傳遞給槽函數(shù)執(zhí)行,槽函數(shù)就是其響應(yīng)結(jié)果

可以在設(shè)計(jì)圖形化界面中右鍵直接創(chuàng)建槽接口,QtCreator會(huì)自動(dòng)補(bǔ)全需要的語法語句,手動(dòng)編寫時(shí),槽函數(shù)在主程序文件中編寫完后,還需要在頭文件中進(jìn)行聲明?,例如“取消按鈕”按下后會(huì)觸發(fā)一個(gè)信號(hào),處理該信號(hào)的槽函數(shù)為:

void Widget::on_cancelButton_clicked()

{

this->close();

}

其作用是關(guān)閉這個(gè)父類?;除此之外還需要在頭文件中聲明

private slots:

void on_cancelButton_clicked();

槽函數(shù)的作用就是觸發(fā)響應(yīng)信號(hào)后執(zhí)行的結(jié)果,有了結(jié)果還需要和對(duì)應(yīng)的信號(hào)連接起來,由此引出非常重要的函數(shù)connect

connect定義為:

connect(誰發(fā)出信號(hào),發(fā)出的信號(hào),誰接收信號(hào),接收后怎么處理);

?在上述例子中對(duì)應(yīng)的connect函數(shù)語句為

connect(ui->cancelButton,&QPushButton::clicked,this,&Widget::on_cancelButton_clicked);

此為connect的一種寫法,取類地址后添加動(dòng)作函數(shù) ,還有一種connect寫法:

connect(ui->cmdLine,SIGNAL(returnPressed()),this,SLOT(on_commitButton_clicked()));

/*ui指針指向的成員cmdline發(fā)出信號(hào),

cmdline屬于QlineEdit該類中對(duì)回車鍵的信號(hào)描述為上文所示,

交給父類進(jìn)行處理,然后將信號(hào)連接到對(duì)應(yīng)槽函數(shù)*/

?其作用為將輸入行觸發(fā)的回車鍵按下的信號(hào)連接到commitButton這個(gè)按鈕上

而commitButton按鈕對(duì)應(yīng)的槽函數(shù)為

void Widget::on_commitButton_clicked()

{

QString program = ui->cmdLine->text();

QProcess *myProcess = new QProcess(this);//創(chuàng)建process對(duì)象

myProcess->start(program);

}

Line3是說,QString這個(gè)類中的Program這個(gè)自定函數(shù)對(duì)象的值來自于ui指針指向的成員cmdLine的text函數(shù)的值,text函數(shù)的作用是接收用戶輸入的數(shù)據(jù)(字符串)按鍵按下后會(huì)接入到QProcees函數(shù)里,QProcess會(huì)調(diào)用windows同名進(jìn)程,故commitButton按鍵的作用就是接收用戶輸入的字符串,然后打開windows中相應(yīng)的進(jìn)程,若用戶輸入的字符不是windows的進(jìn)程之一則無響應(yīng)。

另外設(shè)置按鈕對(duì)應(yīng)觸發(fā)進(jìn)程前,頭文件需要添加 #include

4.部分C++語法

4.1類與結(jié)構(gòu)體

如果要定義的一種包含多子類的數(shù)據(jù),他各個(gè)子數(shù)據(jù)包含各自的行為屬性(成員函數(shù)),就要使用class定義

class Box

{

public:

double length; // 長(zhǎng)度

double breadth; // 寬度

double height; // 高度

// 成員函數(shù)聲明

double volume(void);

void set( double len, double bre, double hei );

};

// 成員函數(shù)定義

double Box::volume(void)

{

return length * breadth * height;

}

void Box::set( double len, double bre, double hei)

{

length = len;

breadth = bre;

height = hei;

}

如果要定義的一種包含多子類的數(shù)據(jù),他各個(gè)子類僅有數(shù)據(jù),沒有行為屬性,就沒必要使用class,struct結(jié)構(gòu)體即可

struct Books

{

char title[50];

char author[50];

char subject[100];

int book_id;

} book;

在C++中,類class 和 結(jié)構(gòu)體struct 均可以定義成員函數(shù)(但是C語言中struct不能指定成員函數(shù),僅有成員數(shù)據(jù)) 其區(qū)別僅在定義的初始訪問變量的優(yōu)先級(jí)不同(作用域不同)

class A

{

int a; //此處的a變量是私有的,僅在A作用域內(nèi)

}

struct B

{

int a; //此處的a變量是公有的,不需要通過public來聲明

}

柚子快報(bào)激活碼778899分享:QT5學(xué)習(xí)筆記/順帶學(xué)C++

http://yzkb.51969.com/

好文閱讀

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/19268418.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄