Инструменты пользователя

Инструменты сайта


develop:qt:files

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
develop:qt:files [2021/09/12 13:16]
admin
develop:qt:files [2021/09/22 05:22] (текущий)
admin
Строка 10: Строка 10:
   * **QProcess** - работа с процессами   * **QProcess** - работа с процессами
  
-Для работы с устройством, его необходимо открыть в одном из след режимов: +Для работы с устройством, его необходимо открыть в одном из след режимов (**QIODevice::**)
-  * **QIODevice::NotOpen** - устр-во не открыто (хз зачем вообще) +  * **NotOpen** - устр-во не открыто (хз зачем вообще) 
-  * **QIODevice::ReadOnly** - только чтение +  * **ReadOnly** - только чтение 
-  * **QIODevice::WriteOnly** - только запись +  * **WriteOnly** - только запись 
-  * **QIODevice::ReadWrite** - чтение/запись +  * **ReadWrite** - чтение/запись 
-  * **QIODevice::Append** - добавление +  * **Append** - добавление 
-  * **QIODevice::Unbuffered** - непосредственный доступ к данным, без промежуточных буферов чтения/записи +  * **Unbuffered** - непосредственный доступ к данным, без промежуточных буферов чтения/записи 
-  * **QIODevice::Text** - преобразование символов переноса (Windows/Unix)+  * **Text** - преобразование символов переноса (Windows/Unix)
  
 Метод **openMode()** позволяет узнать в каком режиме открыто устройство.\\ Метод **openMode()** позволяет узнать в каком режиме открыто устройство.\\
Строка 78: Строка 78:
 ==== Класс QBuffer ==== ==== Класс QBuffer ====
 ----- -----
 +Представляет собой эмуляцию файлов в памяти компьютера. Это позволяет записывать информацию в ОЗУ, и использовать объекты как обычные файлы. Чтение запись можно делать методами **read()** и **write()**, либо же с помощью потоков.\\
 +
 +<code cpp-qt>
 +QByteArray vArr;
 +QBuffer vBuffer(&vArr);
 +vBuffer.open(QIODevice::WriteOnly);
 +QDataStream vOut(&vBuffer);
 +vOut << QString("Message");
 +</code>
 +Из примера видно, что сами данные сохраняются внутри объекта **QByteArray**. Методом **buffer()** можно получить константную ссылку на этот внутренний объект, 
 +а методом **setBuffer()** соответственно установить для использования другой объект.\\
 +
 +Метод **data()** идентичен **buffer()**, но **setData()** возвращает не указатель (как setBuffer()) константную ссылку на **QByteArray**, для копирования его данных.\\
 +
 +В целом, данный класс удобен для кэширования данных.\\
 +
 +
 ==== Класс QTemporaryFile ==== ==== Класс QTemporaryFile ====
 ----- -----
 +Предоставляет средства для создания и работы с временными файлами, временные файлы могут пригодится например для сброса больших данных на диск.\\
 +Самостоятельно генерирует уникальное имя файла, хранятся файлы в промежуточной директории (**QDir::tempPath()**), при уничтожении объекта, уничтожаются и его временные файлы.
  
  
 ===== Работа с каталогами. Класс QDir ===== ===== Работа с каталогами. Класс QDir =====
 +Представление каталогов в платформонезависимом виде.\\
 +Имеет ряд статических методов (**QDir::**):
 +  * **current()** - текущий каталог приложения
 +  * **root()** - корневой каталог
 +  * **drivers()** - список с узловыми каталогами, например для винды это корневые разделы (C:\, D:\ и т.д.) (указатель на объект QFileInfo)
 +  * **home()** - каталог пользователя
 +
 +Данный класс не предоставляет методов для определения каталога из которого запущено приложение, его можно определить методом- **QApplication::applicationDirPath()**.\\
 +
 +Существование можно определить **exist()**. Для перемещения используются **cd()**, **cdUp()**, **cd("..")** и т.д.\\
 +Для конвертирования относительного пути к абсолютному- **makeAbsolute()**.\\
 +
  
 ==== Содержимое каталога ==== ==== Содержимое каталога ====
 ----- -----
 +
 +Метод **entryList()** возвращает перечень содержимого, есть фильтры и т.д.\\
 +Отобразить можно с помощью представления, например **QListWidget** унаследована от **QListView** и имеет инструменты для работы с элементами (вставка/удаление и т.д.).\\
 +
 +
 +<details>
 +<summary>:!: Пример: Содержимое каталога</summary>
 +<code cpp-qt>
 +/*...*/
 +QDir *vDirectory= new QDir(this->txtSelectedDir->toPlainText());
 +QListWidget viewListResults->addItems(vDirectory->entryList());
 +/*...*/
 +</code>
 +</details>
 +
 +
  
  
develop/qt/files.1631452607.txt.gz · Последнее изменение: 2021/09/12 13:16 — admin