Qprocess无法找到最新的文件---QT

Me.Doc 2024-05-12 11:13:25

在下面的代码中,我通过信号槽实现了点击按钮page2_btn1,创建yaml文件,并连接文件夹改变信号,随后自动触发该信号对应的槽,在调用的reconnect()函数中可以通过dir找到最新的文件名称filename,但是通过QProcess类调用终端命令修改该文件时,却无法找到对应的最新的文件(QProcess命令行是正确的,通过system命令行却可以找到)。请问大佬们是什么原因呢,该如何解决?


connect(page2_btn1,&QPushButton::clicked,[=](){

    /*
        创建yaml文件的代码    
    */

        // 当point_yaml文件夹中的文件改变后,触发文件更新
        connect(watcher, &QFileSystemWatcher::directoryChanged, [=](){
            qDebug() << "Directory changed:" << dirPath;
            reconnect(watcher);
        });

});

void reconnect(QFileSystemWatcher* watcher)
{
    qDebug()<<"断开与重连";
    disconnect(watcher, &QFileSystemWatcher::directoryChanged,0,0);

    // 提取点位文件中的坐标信息
    QProcess* process2 = new QProcess;
    QString dirPath = "/home/robot/桌面/gazebo/cafe_robot_ws/src/proc_yaml/point_yaml_file";

    // 获取最新添加的文件信息
    QDir dir(dirPath);
    dir.refresh();
    QStringList files = dir.entryList(QDir::Files, QDir::Time);
    QFileInfo info(files[0]);
    QString filename = info.baseName();
    qDebug()<<filename;

    // 从点位数据中提取所需位置数据
    process2->setWorkingDirectory(dirPath);
    process2->start("bash");
    process2->waitForStarted();
    QString qstr1 = QString::fromUtf8("gedit ");
    QString qstr2 = QString::fromUtf8(".yaml\n");
    QString cmdname = qstr1+filename+qstr2;
    const char* cstr = cmdname.toUtf8().constData();
    process2->write(cstr);

}

...全文
680 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

16,492

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧