Установка разрешения на чтение с помощью QFile(). SetPermissions()
В моей программе Qt 5.5.1 я должен изменить свои конфигурационные файлы с разрешения только на чтение и на чтение и запись... У меня есть 2 вопроса:
Как я могу установить это разрешение? Я пытался:
QFile(path).setPermissions(QFile::ReadWrite);
Но он выдает эту ошибку компилятора:C2664: 'bool QFile:: setPermissions (const QString &, QFileDevice:: Permissions)': невозможно преобразовать аргумент 1 из 'QIODevice::OpenModeFlag' в 'QFileDevice::Permissions' Нет оператора пользовательского преобразования, который мог бы выполнить это преобразование, или оператор не может быть вызван
Как получить разрешения для конкретного файла?
2 ответа
Правильный путь - используя правильный enum, выберите значение из QFileDevice::Permissions
-enum вместо этого (я считаю, что это изменение Qt5). Fe:
QFile(path).setPermissions(QFileDevice::ReadOwner | QFileDevice::WriteOwner);
Чтобы получить права доступа к файлу, используйте .permissions()
метод QFile
:
QFileDevice::Permissions p = QFile(path).permissions();
Который возвращает все права доступа к файлу ИЛИ-ed вместе. Таким образом, чтобы проверить, установлено ли определенное разрешение, вы можете сделать что-то вроде:
if (p & QFileDevice::ReadOwner)
{
}
Как указано в сообщении об ошибке компилятора, вы передавали QIODevice::OpenModeFlag
enum value to setPermissions()
, QIODevice::OpenModeFlag
используется для описания режима, в котором устройство открыто.
Здесь вам нужна комбинация значений из перечисления QFileDevice::Permission.
QFile(path).setPermissions(QFileDevice::ReadOwner | QFileDevice::WriteOwner);