在我的Qt 5.5.1程序中,我必须将配置文件权限从只读更改为读写...我有2个问题:
如何设置此权限?我试过了:QFile(path).setPermissions(QFile::ReadWrite);
但它抛出了这个编译错误:
C2664:'bool QFile :: setPermissions(const QString &,QFileDevice :: Permissions)':无法转换参数1 'QIODevice :: OpenModeFlag'到'QFileDevice :: Permissions'没有 可以执行此操作的用户定义转换运算符 转换,或者不能调用运算符
如何获取特定文件的权限?
答案 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);