在Linux上,chmod
可以将给定文件的权限设置为none
,即。没有人可以read/write/exec
这个文件。
(Wikipedia - Octal modes)
如何对Qt做同样的事情?
我知道有QFile::setPermissions
和enum QFile::Permission
,但在枚举中没有值none
。
答案 0 :(得分:4)
QFile::setPermissions(0)
清除Linux上的chmod
所有权限。
Windows更新
根据Qt QFile文件:
Qt对文件权限的理解是有限的,这会影响到 尤其是
QFile::setPermissions()
函数。在Windows上,Qt会 设置只保留传统的只读标志,并且只有当没有时才设置 写*标志被传递。 Qt不操纵访问控制列表 (ACL),这使得这个功能对NTFS卷几乎没用。它 可能仍然适用于使用VFAT文件系统的USB记忆棒。 POSIX 也不会操纵ACL。
因此,在Windows上,可以使用QFile::setPermissions()
设置或取消设置旧版只读标志。
使用该功能也很棘手。要设置只读标志,只应配置一些“读取”权限。但是,要删除该标志,应添加写入权限,例如:
// set Windows read-only file flag
file.setPermissions(QFile::ReadOther);
// remove Windows read-only file flag
file.setPermissions(QFile::ReadOther | QFile::WriteOther);
的答案中找到的最后一招
答案 1 :(得分:1)
由于Permissions
只是QFlags<Permission>
的typedef,因此您可以使用构造函数QFlags<Permission>(Zero zero = 0)
:
file.setPermissions(Permissions());
或 - 在C ++ 11中:
file.setPermissions({});