freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于qt的ftp下載工具畢業(yè)論文(編輯修改稿)

2025-07-21 02:34 本頁面
 

【文章內(nèi)容簡介】 Project命令,選擇C++ Project選項(xiàng),創(chuàng)建新的工程:。工程創(chuàng)建完畢后,開始創(chuàng)建圖形界面。首先,選擇FileNew命令,創(chuàng)建一個新的窗體,把新窗體的名字命名為“FTP上傳與下載”。接著向窗體上添加控件,添加控件的方法非常簡單,采用拖放的方式即可。根據(jù)功能需要,我往窗體上加入了4個Label,3個Line Edit ,5個PushButton部件,1個TreeWidget(窗體),1個TollButton(返回按鈕)及1個Progress Bar(進(jìn)度條)部件,,接著更改各控件屬性:(1)將“服務(wù)器地址”label后的Line Edit的objectName屬性改為“ServerLineEdit”,其text 屬性改為一個我已經(jīng)擁有的FTP網(wǎng)站地址,即“。(2)將“用戶名”label后的Line Edit的objectName屬性改為“userLineEdit”,其text屬性改為空,將其toolTip屬性改為“默認(rèn)用戶名請使用:空,此時密碼任意?!保?)將“密碼”label后的Line Edit的objectName屬性改為“passWdLineEdit”,其text屬性改為空,將其echoMode屬性改為“normal”。(4)將“登錄”按鈕的objectName屬性改為“l(fā)oadButton”。(5)將“返回上一級目錄”按鈕的objectName屬性改為“ParentButton”。(6)將“下載”按鈕的objectName屬性改為“downButton”。(7)將“退出”按鈕的objectName屬性改為“quitButton”。ProgressBarToolButtonTreeWidget FTP下載工具界面 具體功能實(shí)現(xiàn)1. QFtp類在Qt中,QFtp類為我們實(shí)現(xiàn)了FTP協(xié)議的客戶端所需要的功能,比如它不僅提供了完成最常用的各種FTP操作的函數(shù),還能執(zhí)行任意的FTP命令,并且QFtp類是以異步方式工作的。在這里,我主要通過QT所提供的Qftp類來實(shí)現(xiàn)本程序的主要功能。具體實(shí)現(xiàn)代碼如下:Class FtpClient:public QDialog1 {2 Q_OBJECT //因?yàn)橄旅嬗胁酆瘮?shù)的聲明,所以這里需要加上宏Q_OBJECT,該宏被定義為: signals: void clicked( )。 private slots: void animate()。3 Public:4 FtpClient(QWidget*parent=0,QT::WindowFlags f=0)。5 ~FtpClient( )。6 Public:7 QLabel* LabelServer。8 QLineEdit* LineEditserver。9 QLabel* LabeUser。10 QLineEdit* LineEditUser。11 QLabel* LabelPassword。12 QLineEdit* LineEditPassword。13 QPushButton* PushButtonLogin。14 QPushButton* PushButtonPut。15 QPushButton* PushButtonGet。 16 Enum STATUS{None,LOGIN,PUT,GET}。17 STATUS curStatus。 18 QFtp *ftpClient。19 QFlie *localFile。20 Public slots:21 Void slotLogin( )。22 Void slotPut( )。23 Void slotGet( )。24 Void slotStateChanged(int state)。25 Void slotDone(bool error)。 }。以上這段代碼是QFtp類的聲明,QFtp為我們提供了基于FTP協(xié)議的客戶端功能,其中第7到第15行是對程序所使用的各控件的定義,第20到第25行是定義了所用到的各種公共的槽函數(shù)。而enum STATUS定義了當(dāng)前FTP的狀態(tài),如登錄、上傳、下載狀態(tài),用來指示成功后的狀態(tài)顯示。2. 槽函數(shù)定義與連接在Qt程序中,事件處理的方式采用了信號(signal)和插槽(slot)機(jī)制。信號和插槽機(jī)制的好處是不需要調(diào)用翻譯表,節(jié)省資源。利用信號和插槽進(jìn)行對象間的通信是Qt的最主要特征之一。當(dāng)槽函數(shù)與信號相連接時,當(dāng)這個信號發(fā)生時,槽函數(shù)即可被自動調(diào)用。因此我們在實(shí)現(xiàn)的時候,需要預(yù)先定義槽函數(shù),并將其與特定的信號連接,才能完成對事件的觸發(fā)和捕捉處理。系統(tǒng)設(shè)計(jì)中所定義的主要槽函數(shù)如下: void connectOrDisconnect( )。 // 定義登錄和注銷 void downloadFile( )。 //定義下載函數(shù) void ftpCommandFinished(int mandId, bool error)。 void addToList(const QUrlInfo amp。urlInfo)。 void processItem(QTreeWidgetItem *item, int column)。 void cdToParent( )。 //定義返回父目錄 void updateDataTransferProgress(qint64 readBytes,qint64 totalBytes)。 定義完了槽函數(shù),接下來就是最為重要的事情——將信號與槽進(jìn)行連接。例如當(dāng)我點(diǎn)擊“登錄”按鈕的時候,這個就作為一個信號,與之相連接的槽就會觸發(fā),連接指定的地址。在這里,我將FTP命令開始、結(jié)束,進(jìn)度條更新和文件列表更改等等事件關(guān)聯(lián)到它的槽上。void Ftp::connectOrDisconnect( )//打開連接與關(guān)閉連接主機(jī){ qDebug( )connectOrDisconnect。 //如果ftp是非空的,說明主機(jī)已經(jīng)連接到服務(wù)器了,那么說明需要斷開當(dāng)前連接,用來下次重新連接 if(ftp) { ftpabort( )。 ftpdeleteLater( )。 ftp=0。 //設(shè)置控件的初始狀態(tài) uitreeWidgetsetEnabled(false)。 uiparentButtonsetEnabled(false)。 uidownButtonsetEnabled(false)。 uiloadButtonsetEnabled(true)。 //uiloadButtonsetText(tr(連接))。 uistatusLabelsetText(tr(請輸入FTP服務(wù)器名.))。 return 。 } //如果沒有執(zhí)行上面的if,說明初始是沒有連接的,需要進(jìn)行連接服務(wù)器 ftp = new QFtp(this)。 QString serverAddress = uiserverLineEdittext( )。 if(( )) { QMessageBox::warning(this,tr(錯誤),tr(請輸入Ftp服務(wù)器地址))。 return。 } QString userName = uiuserLineEdittext( )。 if(( )) { QMessageBox::warning(this,tr(錯誤),tr(請輸入用戶名))。 return 。 } QString passWord = uipasswdLineEdittext( )。 connect(ftp,SIGNAL(mandFinished(int,bool)),this,SLOT(ftpCommandFinished(int,bool)))。 qDebug( )connect to add list。 //登陸成功后列出當(dāng)前服務(wù)器的文件列表 connect(ftp,SIGNAL(listInfo(QUrlInfo)),this,SLOT(addToList(QUrlInfo)))。 //根據(jù)數(shù)據(jù)的傳輸量來更新進(jìn)度條的狀態(tài)connect(ftp,SIGNAL(dataTransferProgress(qint64,qint64)),this,SLOT(updateDataTranferProgress(qint64,qint64)))。 uitreeWidgetclear( )。 ( )。 ( )。 QUrl url(uiserverLineEdittext( ))。 if(!( )||( ).toLower( )!= QLatin1String(ftp)) { ftpconnectToHost(uiserverLineEdittext( ),21)。 ftplogin( )。 } else { ftpconnectToHost(( ),(21))。 if(!( ).isEmpty( )) ftplogin(QUrl::fromPercentEncoding(( ).toLatin1( )),( ))。 else ftplogin(uiuserLineEdittext(),uipasswdLineEdittext( ))。 if(!( ).isEmpty( )) ftpcd(( ))。 } uitreeWidgetsetEnabled(true)。 uiloadButtonsetEnabled(false)。 uiloadButtonsetText(tr(注銷))。 uiopenFileButtonsetEnabled(true)。 uistatusLabelsetText(tr(連接到FTP服務(wù)器 %1...).arg(uiserverLineEdittext( )))。},其中像listinfo信號與add to list槽的連接就是用來根據(jù)數(shù)據(jù)的傳輸量來更新進(jìn)度條的狀態(tài)。 信號與槽連接圖3. 登錄的主要實(shí)現(xiàn)代碼及分析這個事件用來檢查啟動以及登錄FTP服務(wù)的狀態(tài),并把狀態(tài)迅速顯示在狀態(tài)條上,由于QT槽函數(shù)是實(shí)時傳遞的,類似于C++中的message,因此狀態(tài)條的更新也是非常的及時。slotLoginClient::slotLogin( ){1 QString serverAddress = LineEditServertext( )。2 if(( ))3 {4 QMessageBox::warning(this,tr(error),te(Please input server address!))。5 return。6 }7 QString useName = LineEditUsertext( )。8 if(( ))9 {10 QMessageBox::warning(this,tr(error),tr(Please input user name!))。11 return。12 }13 string password =
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1