使用 QFile().setPermissions() 设置读写权限

Setting read write permission with QFile().setPermissions()

在我的 Qt 5.5.1 程序中,我必须将我的配置文件权限从只读更改为读写...我有 2 个问题:

  1. 如何设置这个权限?我试过:QFile(path).setPermissions(QFile::ReadWrite); 但它抛出这个编译器错误:

    C2664: 'bool QFile::setPermissions(const QString &,QFileDevice::Permissions)' : cannot convert argument 1 from 'QIODevice::OpenModeFlag' to 'QFileDevice::Permissions' No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

  2. 如何获取特定文件的权限?

正确的方法是使用正确的枚举,从 QFileDevice::Permissions-enum 中选择一个值(我相信这是 Qt5 的改变)。 F.e.:

QFile(path).setPermissions(QFileDevice::ReadOwner | QFileDevice::WriteOwner);

获取文件的权限,使用QFile.permissions()方法:

QFileDevice::Permissions p = QFile(path).permissions();

其中returns所有文件权限OR-ed在一起。所以要测试是否设置了某个权限,你可以这样做:

if (p & QFileDevice::ReadOwner)
{
}

如您收到的编译器错误所述,您将 QIODevice::OpenModeFlag 枚举值传递给 setPermissions()QIODevice::OpenModeFlag 用于描述设备打开的模式.

这里您需要的是 QFileDevice::Permission 枚举值的组合。

QFile(path).setPermissions(QFileDevice::ReadOwner | QFileDevice::WriteOwner);