⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftpclient.cpp

📁 Linux窗口程序设计,Qt4精彩实例分析,以循序渐进的方式介绍Qt4开发及其实例子,第一部分
💻 CPP
字号:
#include "ftpclient.h"FtpClient::FtpClient( QWidget *parent, Qt::WindowFlags  f )    : QDialog( parent, f ){      setWindowTitle(tr("FTP Client"));        LabelServer = new QLabel( this );    LabelServer->setText(tr("Server Address:"));        LineEditServer = new QLineEdit( this );        LabelUser = new QLabel( this );    LabelUser->setText(tr("User Name:"));        LineEditUser = new QLineEdit( this );        LabelPassword = new QLabel( this );    LabelPassword->setText(tr("Password:"));        LineEditPassword = new QLineEdit( this );            PushButtonLogin = new QPushButton( this);    PushButtonLogin->setText( tr( "Login" ) );          PushButtonPut = new QPushButton( this);    PushButtonPut->setText( tr( "Put" ) );              PushButtonGet = new QPushButton( this);    PushButtonGet->setText( tr( "Get" ) );              QGridLayout *gLayout = new QGridLayout();    gLayout->addWidget( LabelServer,0,0 );    gLayout->addWidget( LineEditServer,0,1 );    gLayout->addWidget( LabelUser,1,0 );    gLayout->addWidget( LineEditUser,1,1 );    gLayout->addWidget( LabelPassword,2,0 );    gLayout->addWidget( LineEditPassword,2,1 );        QHBoxLayout *hbLayout = new QHBoxLayout();    hbLayout->addWidget( PushButtonPut );    hbLayout->addWidget( PushButtonGet );        QVBoxLayout *vbLayout = new QVBoxLayout( this );    vbLayout->addLayout( gLayout );    vbLayout->addWidget( PushButtonLogin );    vbLayout->addLayout( hbLayout );	connect(PushButtonLogin,SIGNAL(clicked()),this,SLOT(slotLogin()));    connect(PushButtonPut,SIGNAL(clicked()),this,SLOT(slotPut()));    connect(PushButtonGet,SIGNAL(clicked()),this,SLOT(slotGet()));    	PushButtonPut->setEnabled(false);	PushButtonGet->setEnabled(false);		curStatus=None;}FtpClient::~FtpClient(){}                                                                             void FtpClient::slotLogin()                     {          	QString serverAddress = LineEditServer->text();	if(serverAddress.isEmpty())	{		QMessageBox::warning(this,tr("error"),tr("Please input server address!"));		return;	}	QString userName = LineEditUser->text();	if(userName.isEmpty())	{		QMessageBox::warning(this,tr("error"),tr("Please input user name!"));		return;	}		QString password = LineEditPassword->text();		ftpClient=new QFtp();	ftpClient->connectToHost(serverAddress);		connect(ftpClient, SIGNAL(stateChanged ( int )), this, SLOT(slotStateChanged ( int ) ) );	connect(ftpClient, SIGNAL(done ( bool )), this, SLOT(slotDone ( bool ) ) );		ftpClient->login(userName,password);	curStatus=LOGIN;  }void FtpClient::slotPut()                     {          	bool ok;	QString fileName = QInputDialog::getText(this, tr("Put File:"),		tr("Please input file name:"), QLineEdit::Normal, QString(), &ok);  	if(ok && !fileName.isEmpty())	{		QFile *remoteFileName=new QFile(fileName);		ftpClient->put(remoteFileName, fileName);	}	curStatus=PUT;}void FtpClient::slotGet(){        	bool ok;	QString fileName = QInputDialog::getText(this, tr("Get File:"),		tr("Please input file name:"), QLineEdit::Normal, QString(), &ok);  	if(ok && !fileName.isEmpty())	{		localFile=new QFile(fileName);			localFile->open(QIODevice::WriteOnly);		ftpClient->get(fileName,localFile);	}		curStatus=GET;  }void FtpClient::slotStateChanged ( int state ){	if(state == QFtp::LoggedIn)	{		PushButtonPut->setEnabled(true);		PushButtonGet->setEnabled(true);	}}void FtpClient::slotDone(bool error){	if(error)	{		QMessageBox::warning(this,tr("error"),ftpClient->errorString());		return;	}	if(curStatus == LOGIN)	{		PushButtonLogin->setEnabled(false);		curStatus=None;	}		if(curStatus == PUT)	{		QMessageBox::information(this,tr("succeed"),tr("Put file succeed!"));		curStatus=None;	}	if(curStatus == GET)	{		localFile->close();		QMessageBox::information(this,tr("succeed"),tr("Get file succeed!"));		curStatus=None;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -