#include "ftpclient.h"
#include <QDesktopWidget>
#include <QUrl>
#include <QProcess>
#include <Windows.h>
#include <QFileDialog>
#include <QKeySequence>
#include <QContextMenuEvent>
#include <QFile>
#include <QMessageBox>
#pragma region 名称编辑框
FEditName::FEditName(int key, const QString &strInfo)
{
m_ui = new Ui::frmEditName;
m_ui->setupUi(this);
switch(key)
{
case 0:
m_ui->labTitle->setText(tr("文件夹名"));
setWindowTitle(tr("新建文件夹"));
m_ui->txtContent->setText(tr("新建文件夹"));
break;
case 1:
m_ui->labTitle->setText(tr("文件名"));
m_ui->txtContent->setText(strInfo);
setWindowTitle(tr("重命名"));
break;
default:
break;
}
connect(m_ui->btnSure, SIGNAL(clicked()), this, SLOT(btnSureClicked()));
connect(m_ui->btnCancel, SIGNAL(clicked()), this, SLOT(btnCancelClicked()));
connect(m_ui->txtContent, SIGNAL(returnPressed()), this, SLOT(btnSureClicked()));
// setResize(false);
int iWidth = QApplication::desktop()->width();
int iHight = QApplication::desktop()->height();
int iFormWidth = 310;
int iFormHeight = 140;
setGeometry(iWidth / 2 - iFormWidth / 2, iHight / 2 - iFormHeight / 2, iFormWidth, iFormHeight);
}
/*************************************************************************
*处理内容:析构函数
*@param:
*@return:
*@exception
**************************************************************************/
FEditName::~FEditName()
{
delete m_ui;
}
void FEditName::showEvent(QShowEvent *aEvent)
{
m_ui->txtContent->setFocus();
m_ui->txtContent->selectAll();
}
/*************************************************************************
*处理内容:确定按钮
*@param:
*@return:
*@exception
**************************************************************************/
void FEditName::btnSureClicked()
{
if(m_ui->txtContent->text().length() == 0)
{
return;
}
retString = m_ui->txtContent->text();
done(this->Accepted);
}
/*************************************************************************
*处理内容:取消事件
*@param:
*@return:
*@exception
**************************************************************************/
void FEditName::btnCancelClicked()
{
done(this->Rejected);
}
#pragma endregion
FtpClient::FtpClient(QWidget *parent, Qt::WFlags flags)
: QDialog(parent, flags)
{
m_ui.setupUi(this);
initView();
connectToRemote();
connect(m_ui.treeIssue, SIGNAL(itemActivated(QTreeWidgetItem *, int)),
this, SLOT(processItem(QTreeWidgetItem *, int)));
connect(m_ui.btnBack, SIGNAL(clicked()), this, SLOT(btnBackClicked()));
connect(m_ui.btnReflash, SIGNAL(clicked()), this, SLOT(btnReflashClicked()));
connect(m_ui.btnPublish, SIGNAL(clicked()), this, SLOT(btnPublishClicked()));
sysItem = NULL;
fold = false;
add = false;
depth = 0;
}
FtpClient::~FtpClient()
{
if (NULL != m_mMenu)
{
delete m_mMenu;
}
}
void FtpClient::initView()
{
m_ui.treeIssue->setRootIsDecorated(false);
m_ui.treeIssue->setHeaderLabels(QStringList() << tr("名称") << tr("大小") << tr("修改日期"));
m_ui.treeIssue->header()->setStretchLastSection(false);
m_ui.btnBack->setEnabled(false);
m_ui.procBar->setVisible(false);
m_mMenu = new QMenu(m_ui.treeIssue);
m_actAddDir = m_mMenu->addAction(QIcon(":/img/add.png"),tr("新建文件夹"), this, SLOT(addNewDir()), QKeySequence(Qt::CTRL + Qt::Key_A));
m_actAddFile = m_mMenu->addAction(tr("上传文件"), this, SLOT(uploadFile()), QKeySequence(Qt::CTRL + Qt::Key_F));
m_actAddFold = m_mMenu->addAction(tr("上传文件夹"), this, SLOT(uploadFold()), QKeySequence(Qt::CTRL + Qt::Key_W));
m_actDelFile = m_mMenu->addAction(QIcon(":/img/delete.png"),tr("删 除"), this, SLOT(deleteFile()), QKeySequence(Qt::CTRL + Qt::Key_D));
// m_actDelFold = m_mMenu->addAction(QIcon(":/img/delete.png"),tr("删除目录项"), this, SLOT(delFold()), QKeySequence(Qt::CTRL + Qt::Key_C));
m_actRename = m_mMenu->addAction(tr("重命名文件"), this, SLOT(renameFile()), QKeySequence(Qt::CTRL + Qt::Key_R));
m_actDownloadFile = m_mMenu->addAction(tr("下载文件"), this, SLOT(downloadFile()), QKeySequence(Qt::CTRL + Qt::Key_L));
m_actDownLoadFold = m_mMenu->addAction(tr("下载文件夹及所有子文件"), this, SLOT(downloadFold()), QKeySequence(Qt::Key_B));
m_ui.treeIssue->installEventFilter(this);
m_ui.treeIssue->setStyleSheet("QTreeWidget::item{height:20px;} ");
m_mMenu->setStyleSheet("QMenu::item{height:30px;} ");
}
//远程链接
void FtpClient::connectToRemote()
{
m_Ftp = new QFtp;
connect(m_Ftp, SIGNAL(stateChanged(int)), this, SLOT(ftpCommandStarted(int)));
connect(m_Ftp, SIGNAL(commandFinished(int,bool)),
this, SLOT(ftpCommandFinished(int,bool)));
connect(m_Ftp, SIGNAL(listInfo(QUrlInfo)),
this, SLOT(addToList(QUrlInfo)));
connect(m_Ftp, SIGNAL(dataTransferProgress(qint64, qint64)), this, SLOT(updateDataTransferProgress(qint64, qint64)));
QUrl url( ftpIP );
if (!url.isValid() || url.scheme().toLower() != QLatin1String("ftp"))
{
m_Ftp->connectToHost( ftpIP, ftpPort);
m_Ftp->login(ftpUser, ftpPassword);
}
else
{
m_Ftp->connectToHost(url.host(), url.port(ftpPort));
if (!url.userName().isEmpty())
m_Ftp->login(QUrl::fromPercentEncoding(url.userName().toLatin1()), url.password());
else
m_Ftp->login(ftpIP, "ftp");
if (!url.path().isEmpty())
m_Ftp->cd(url.path());
}
}
/*************************************************************************
*处理内容:FTP连接状态变更
*@param: state 状态
*@return:
*@exception
**************************************************************************/
void FtpClient::ftpCommandStarted(int state)
{
switch(state)
{
case QFtp::Connecting:
m_ui.stateLabel->setText(tr("连接中"));
break;
case QFtp::Connected:
m_ui.stateLabel->setText(tr("已连接"));
break;
case QFtp::LoggedIn:
m_ui.stateLabel->setText(tr("已登录"));
break;
case QFtp::Unconnected:
m_ui.stateLabel->setText(tr("未连接"));
break;
case QFtp::HostLookup:
break;
case QFtp::Get:
m_ui.stateLabel->setText( tr("下载中"));
break;
default:
break;
}
}
/*************************************************************************
*处理内容:事件过滤器
*@param: target 事件发送者
event 事件参数
*@return:
*@exception
**************************************************************************/
bool FtpClient::eventFilter(QObject *target, QEvent *event)
{
if(target == m_ui.treeIssue && event->type() == QEvent::ContextMenu)
{
if(m_ui.treeIssue->selectedItems().count() == 0)
{
m_actDelFile->setEnabled(false);
m_actRename->setEnabled(false);
m_actDownloadFile->setEnabled(false);
m_actDownLoadFold->setEnabled(true);
}
else
{
m_actDelFile->setEnabled(true);
m_actRename->setEnabled(true);
m_actDownloadFile->setEnabled(true);
m_actDownLoadFold->setEnabled(false);
}
QContextMenuEvent *menuEvent = (QContextMenuEvent *)event;
m_mMenu->popup(menuEvent->globalPos());
return true;
}
return QWidget::eventFilter(target, event);
}
/*************************************************************************
*处理内容:大小改变事件
*@param: aEvent 事件参数
*@return:
*@exception
**************************************************************************/
void FtpClient::resizeEvent(QResizeEvent *aEvent)
{
int iWidth = m_ui.treeIssue->width();
m_ui.treeIssue->setColumnWidth(0, (iWidth / 3) * 2);
m_ui.treeIssue->setColumnWidth(1, 80);
m_ui.treeIssue->setColumnWidth(2, 150);
}
/*************************************************************************
*处理内容:立即发布刷新
*@param:
*@return:
*@exception
**************************************************************************/
void FtpClient::btnPublishClicked()
{
if(QMessageBox::question(this,tr("信息提示"), tr("确定要立即发布当前文档吗?\r\n若否,文档将在每日凌晨3点自动发布。"),
QMessageBox::Yes | QMessageBox::Cancel) == QM
没有合适的资源?快使用搜索试试~ 我知道了~
ftp.zip_FTP CLIENT_windowhm5
共154个文件
svn-base:93个
png:46个
cpp:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 73 浏览量
2022-09-25
00:26:25
上传
评论
收藏 391KB ZIP 举报
温馨提示
实现ftp客户端的登录下载上传,以及服务端文件内容显示
资源详情
资源评论
资源推荐
收起资源包目录
ftp.zip_FTP CLIENT_windowhm5 (154个子文件)
ftpclient.cpp 28KB
frmBase.cpp 8KB
main.cpp 410B
Thumbs.db 62KB
entries 8KB
ftpclient.h 3KB
frmBase.h 1KB
title.ico 12KB
login.png 37KB
topLeft.png 24KB
title.png 4KB
publish.png 4KB
folder.png 4KB
back.png 4KB
file.png 3KB
signal0.png 3KB
OverNext.png 3KB
PlanUp.png 3KB
HeaderRightSide.png 3KB
Front.png 3KB
NoNext.png 3KB
PlanDown.png 3KB
HeaderLeftSide.png 3KB
RightBorder.png 3KB
LeftBorder.png 3KB
topRight.png 1KB
MinSizeButton.png 1KB
CloseButton.png 1KB
logout.png 1KB
MaxSizeButton.png 1KB
stop.png 1KB
planManager.png 1KB
user2.png 1KB
add.png 1KB
notice.png 1KB
exit.png 1KB
emg.png 1KB
user.png 1KB
delete.png 1KB
FooterLeftSide.png 979B
reflash.png 974B
FooterRightSide.png 973B
HeaderBackground.png 966B
ButtomBorder.png 935B
Background.png 920B
dataDic.png 880B
role.png 770B
docCenter.png 688B
serviceStation.png 667B
user1.png 664B
client.png 612B
purview.png 612B
flyNotice.png 610B
topMid.png 367B
ftpclient.qrc 100B
FtpClient.sln 893B
FtpClient.suo 33KB
Thumbs.db.svn-base 62KB
login.png.svn-base 37KB
topLeft.png.svn-base 24KB
title.ico.svn-base 12KB
title.png.svn-base 4KB
publish.png.svn-base 4KB
folder.png.svn-base 4KB
back.png.svn-base 4KB
file.png.svn-base 3KB
signal0.png.svn-base 3KB
OverNext.png.svn-base 3KB
PlanUp.png.svn-base 3KB
HeaderRightSide.png.svn-base 3KB
Front.png.svn-base 3KB
NoNext.png.svn-base 3KB
PlanDown.png.svn-base 3KB
HeaderLeftSide.png.svn-base 3KB
RightBorder.png.svn-base 3KB
LeftBorder.png.svn-base 3KB
topRight.png.svn-base 1KB
MinSizeButton.png.svn-base 1KB
CloseButton.png.svn-base 1KB
logout.png.svn-base 1KB
MaxSizeButton.png.svn-base 1KB
stop.png.svn-base 1KB
planManager.png.svn-base 1KB
user2.png.svn-base 1KB
add.png.svn-base 1KB
notice.png.svn-base 1KB
exit.png.svn-base 1KB
emg.png.svn-base 1KB
user.png.svn-base 1KB
delete.png.svn-base 1KB
FooterLeftSide.png.svn-base 979B
reflash.png.svn-base 974B
FooterRightSide.png.svn-base 973B
HeaderBackground.png.svn-base 966B
ButtomBorder.png.svn-base 935B
Background.png.svn-base 920B
dataDic.png.svn-base 880B
role.png.svn-base 770B
docCenter.png.svn-base 688B
serviceStation.png.svn-base 667B
共 154 条
- 1
- 2
我虽横行却不霸道
- 粉丝: 71
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- STM32-Lib-LIS3DSH-Accelerometer-main
- 软件测试面试题.pdf
- WINSOFT ComPort 6.0 for Delphi XE10.1-XE10.3 Cracked
- 数据库基础知识参考试题.doc
- 数据库存储引擎技术的优劣势分析.docx
- 基于GPT的AI文档分析、阅读和问答工具.txt
- 《机器人控制系统的设计与Matlab仿真 》仿真程序
- AI-免费物品无损放大工具AI在线免费放大图片工具.txt
- C++基于DPLL算法的SAT的蜂窝数独游戏求解程序,程序设计综合课程设计,包括SAT求解器板块、蜂窝数独转化成cnf公式板块
- 微信小程序恐龙快跑小程序源码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0