我有一个显示包含文本文件的文件夹的 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/