c++ - 如果在 TreeView Qt 中按下按钮,则重命名文件

标签 c++ qt file treeview

我有一个显示包含文本文件的文件夹的 TreeView 。有一个“打开”按钮。这将打开文件。但是当按下这个按钮时,它应该将文件重命名为:read filename.txt。因此,如果有一个名为 nameslist.txt 的文件,并且按下按钮,则应将其重命名为 read nameslist.txt 或类似名称。我想到了这样的事情:

void berichtenhistorie::on_Openbutton_released()
{
    QModelIndex index = ui->treeView->currentIndex();
    QString name = index.fileName();
    QString path = index.filePath();
    QFile file(path);
    file.open(QIODevice::WriteOnly | QIODevice::Text);
    file.rename("read " + name);
    file.close();
}

但这行不通。我收到以下错误: 错误:C2352:“QDirModel::fileName”:非法调用非静态成员函数 但是我不知道如何正确使用 fileName()filePath()

感谢您的帮助!

最佳答案

我想这就是您要找的:

void berichtenhistorie::on_Openbutton_released()
{
    QModelIndex index = ui->treeView->currentIndex();
    QFileSystemModel *model = (QFileSystemModel*)ui->treeView->model();
    QString path = model->filePath(index);
    QString name = model->fileName(index);
    QString dir = path;
    dir.remove(dir.size() - name.size(), name.size());
    QFile file(path);
    if(file.open(QIODevice::WriteOnly | QIODevice::Text))
    {
        //Interact with the file
        file.close();
        if(file.rename(QString("%1read %2").arg(dir, name)))
                qDebug() << "Renamed";
    }
}

关于c++ - 如果在 TreeView Qt 中按下按钮,则重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20385920/

相关文章:

c++ - 未解析的外部符号静态变量(标题中定义的方法使用的变量)

c++ - 以下带有 OpenCV 代码的 C++ 未被编译

qt - 您如何乘以QString,使其重复n次?

java - 搜索列表中与 id 有关的最后一个值

android - 如何在android中进行AES解密,而不将解密文件写入SD卡存储?

c++ - STL:为 vector 写入 "where"运算符

c++ - 与继承类的链接错误

c++ - 如何防止 QStringBuilder 超出其初始化范围

C# 访问锁定的文件

c++ - 子进程会影响父进程的环境吗?