使用 QFile().setPermissions() 设置读写权限
Setting read write permission with QFile().setPermissions()
在我的 Qt 5.5.1 程序中,我必须将我的配置文件权限从只读更改为读写...我有 2 个问题:
如何设置这个权限?我试过: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
如何获取特定文件的权限?
正确的方法是使用正确的枚举,从 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);
在我的 Qt 5.5.1 程序中,我必须将我的配置文件权限从只读更改为读写...我有 2 个问题:
如何设置这个权限?我试过:
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
如何获取特定文件的权限?
正确的方法是使用正确的枚举,从 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);