【问题标题】:Setting read write permission with QFile().setPermissions()使用 QFile().setPermissions() 设置读写权限
【发布时间】:2016-04-10 16:37:18
【问题描述】:

在我的 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. 如何获取特定文件的权限?

【问题讨论】:

    标签: c++ qt qt5 qfile


    【解决方案1】:

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

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

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

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

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

    if (p & QFileDevice::ReadOwner)
    {
    }
    

    【讨论】:

    • 谢谢 - 问题已解决 :) 另一个问题:如何检查是否未设置权限?
    • if (!(p & QFileDevice::ReadOwner))if ((p & QFileDevice::ReadOwner) == 0) ?
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-05-13
      • 2016-06-08
      • 2016-09-22
      • 2012-06-12
      • 2011-01-10
      • 1970-01-01
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多