专业的编程技术博客社区

网站首页 > 博客文章 正文

QT远程Linux文件浏览器(qt调用本地浏览器打开url)

baijin 2024-09-08 01:54:05 博客文章 14 ℃ 0 评论

写完了windows本地浏览器https://www.toutiao.com/i6831713760030229003/

又开始琢磨如何可以像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传输文件以及目录.

?

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表