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

时间:2016-01-06 14:35:15

标签: c++ qt qt5 qfile

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

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

      

    C2664:'bool QFile :: setPermissions(const QString   &,QFileDevice :: Permissions)':无法转换参数1   'QIODevice :: OpenModeFlag'到'QFileDevice :: Permissions'没有   可以执行此操作的用户定义转换运算符   转换,或者不能调用运算符

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

2 个答案:

答案 0 :(得分:4)

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

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

要获取文件的权限,请使用QFile的{​​{3}}方法:

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

将OR-ed一起返回所有文件权限。因此,要测试是否设置了某个权限,您可以执行以下操作:

if (p & QFileDevice::ReadOwner)
{
}

答案 1 :(得分:2)

正如您所获得的编译器错误所述,您将QIODevice::OpenModeFlag枚举值传递给setPermissions()QIODevice::OpenModeFlag用于描述设备打开的模式。< / p>

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

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