QT远程Linux文件浏览器

6 篇文章 1 订阅
2 篇文章 0 订阅

写完了windows本地浏览器QT本地文件浏览器控件_shuxuekuanglihailong的专栏-CSDN博客_qt文件浏览器控件闲来无事,用QT写了个本地文件浏览器,各位看看可还行.主要功能:1左侧树形导航,双击或点展开会自动更新下一层数据,保证操作流畅的前提下更新下一级目录,大白话说的就是能一直点下去且不会卡顿,因为是动态加载数据2目录大小自动线程计算,开始进入会显示正在获取总大小,计算完成后更新3左侧树形控件可随意左右拖动,甚至拖动到最左边直接隐藏4左侧树形控件只显示目录,且双击或单击节点右侧会跳转到相应目录,起到导航的作用其他功能1右侧表格区分文件和目录2控件支持中文https://blog.csdn.net/shuxuekuanglihailong/article/details/113827529?spm=1001.2014.3001.5501

又开始琢磨如何可以像xftp一样方便的访问服务器文件系统,于是经过一番撸码,封装了如下QT组件:

xFileBrowserLinux,继承自QWidget,当然这只是娱乐,我最终的目的是写一个比xftp更方便的东西,先封装linux端组件:

主要原理是使用封装的pssh客户端库连接Linux服务器(使用用户名密码方式),然后保持长连接执行命令获取文件目录信息并刷新显示

主要功能如下:

自动重连功能 

连接Linux服务器后,服务器挂了或网络原因导致sshd不服务了,会自动重连,直至重连成功重新获取信息,断开后状态显示为红点,连接显示为绿点:

新建文件

远程执行touch

新建目录

远程执行mkdir -p

ssh登录

调用本地putty,带入服务器地址,用户名,密码,端口登录,连密码也自动输入了,纯,一键登录.效果如图:

vnc登录

与ssh登录类似,一键登录vnc,使用本地vncviewer方式外部调用.连密码也自动输入了,纯.一键登录 

重命名

远程执行mv命令

删除

远程执行rm -rf 命令

xFileBrowserLinux主要代码如下(写的比较烂,个人风格严重,轻喷): 

class xFileBrowserLinux : public QWidget
{
    Q_OBJECT

public:
    explicit xFileBrowserLinux(QWidget *parent = 0);
    pstring strhost;
    int iport;
    pstring strpwd;
    pstring struser;
    int iportvnc;
    pstring strpwdvnc;
    pstring getTypeNow();//获取当前行类型
    pstring getItemNow(pstring strcolname);
    pstring getPathFullNow();//获取当前全路径(路径加文件名)
    pstring getPathPwdNow();//获取当前路径
    QAction* pActionFirst;//第一个菜单,用于外边后边加
    QAction* newActionTop(QString name);//往前加
    pssh *psh=NULL;
    ~xFileBrowserLinux();
    //需要自己初始化,会自动重连
    void init(pstring host="82.156.128.240",int port=22,pstring pwd="123.asdf",pstring user="root",int iportvnc=2,pstring pwdvnc="sjcs_325");
    void threadGetDataAndShow();
private:
    void ssh();
    void vnc();
private slots:
    void slotSetConnectState(bool bState);
    void slotDoubleClick(int row,int col);
    void on_pbutUpLevel_clicked();

    void on_pbutVNC_clicked();

    void on_pbutSSH_clicked();

signals:
    void sigShowTable(plist<pliststring> lmdata, int keyid=0);
    void sigDoubleClick(int row,int col);
    void sigSetConnectState(bool bState);
private:
    plist<pliststring> getNowFileAndDirs();

    bool bstop=false;
    Ui::xFileBrowserLinux *ui;
};

当然目前这个组件还只能看看信息,后续会加上sftp传输文件以及目录.

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙猫哪里跑

谢大爷赏赐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值