Файл Qt, чем открыть

Обновлено: 21.11.2024

Если мы передаем строку типа "D:\TestFoldler.docx:GauravData:$DATA", мы можем записать содержимое в файл.

Пример:-
Файл QFile("D:\TestFoldler.docx:GauravData:$DATA" );
file.open(QIODevice::WriteOnly);
с помощью этого мы можем записывать содержимое в файл.

но если мы передадим строку вида "\\nas\files\gauravFolder.docx:GauravData:$DATA", это не сработает.

Пример:-
QFile file("\\nas\files\gauravFolder.docx:GauravData:$DATA" );
file.open(QIODevice::WriteOnly);

при этом мы не можем записывать содержимое в файл. мы не можем открыть файл.

Пожалуйста, сделайте необходимое.

С уважением,
Гаурав Бадгуджар.

или используйте синтаксис Qt другим способом. (и только один)
QFile("D:/TestFoldler/GauravData" );

также
"TestFoldler:GauravData:$DATA"
не является допустимым именем файла в Windows.

в linux по-другому
/nas/files/gauravFolder

поэтому убедитесь, что путь действительно правильный.

чтобы добавить к @mrjj, если вы хотите использовать эти пути без дублирования или изменения косых черт, вы можете использовать необработанные строки: QFile file(R"(\nas\files\gauravFolder:GauravData:$DATA)");

@Gaurav-Badgujar Вы не должны использовать : в путях/именах файлов, особенно в Windows

@jsulm
но работает с "D:\TestFoldler:GauravData:$DATA"
но не работает с путем "\nas\files\gauravFolder:GauravData:$DATA".< /p>

@Gaurav-Badgujar Как говорили другие, вы должны использовать \\ или /

@jsulm использовал "/" в соответствии с упомянутым выше комментарием, но до сих пор не получил никакого решения.

@Gaurav-Badgujar
Привет,
Попробуйте использовать полный путь и убедитесь, что он работает для вас.
"c:/nas/files/gauravFolder:GauravData:$DATA"
else
"./nas/files/gauravFolder:GauravData:$DATA"
Проблема с путями , я думаю.

Также еще раз, если в окне, ":" ЗАПРЕЩЕНО

Другой вариант, учитывая имя первой папки nas, я могу догадаться, что это сетевой путь, они обычно начинаются с 2 косых черт, а не только с 1

Здравствуйте,
имена файлов с ":" скрывают данные с помощью ADS (альтернативные потоки данных). Строки типа ":$DATA" имеют особое значение. Обычный проводник, команда DIR и т. д. не видят эти файлы.

Поэтому я сомневаюсь, что Qt может открыть их для чтения/записи; родной CreateFile должен уметь это делать.

В пути есть несколько ошибок, но самым большим препятствием является :$DATA. Это просто не разрешено ни в одной операционной системе M$. Исправить несуществующие пути будет легко, но если имя вашего файла имеет особое значение, это может стать проблемой. Теперь, если :$DATA представляет собой бит данных для записи в имя файла, тогда все в порядке.

В этой статье мы покажем, как выбирать и открывать определенные типы файлов в приложении виджета Qt на C++.

При работе с объектами QFileDialog и использовании функции getExistingDirectory() мы можем открыть объект файлового диалога и отображать только файлы в определенном каталоге с определенными типами файлов.

Это полезная функция во многих приложениях.

Например, приложение запрашивает у пользователя фотографию. Если у вас есть кнопка, позволяющая пользователю выполнять поиск в своей компьютерной системе, вы хотите, чтобы в файлах отображались только типы файлов изображений, такие как jpg, png и т. д.

Вы не хотите, чтобы отображались типы файлов, такие как документы Microsoft Word или файлы .exe, или любые другие типы файлов, кроме файлов изображений.

Ниже показано созданное нами программное приложение с кнопкой «Выбрать изображение». При нажатии отображаются только файлы в формате jpg или png.

Вы можете видеть, что при нажатии этой кнопки отображаются только изображения, что и является ожидаемым эффектом.

Это опять же можно сделать для файлов изображений или файлов любого типа.

Представьте, что это приложение для школы, в котором учащийся может отправить только документ Microsoft Word. Таким образом, будут разрешены только файлы с расширениями .doc или .docx.

Если бы были разрешены только файлы PDF, принимались бы только документы с расширением .pdf.

Итак, как мы можем сделать это в приложении виджета Qt?

Итак, первое, что вам нужно сделать, это создать приложение виджета Qt.

В этом приложении виджета вам нужно будет разместить 1 кнопку.

Мы назвали одну кнопку "Выбрать изображение", поскольку она предназначена для выбора файла изображения. Мы даем этому элементу objectName значение 'chooseImageButton'.

Теперь мы переходим к сути нашего кода, находящегося в файле 'widget.cpp'.

В этот файл 'widget.cpp' мы помещаем следующее содержимое, показанное ниже.

Чтобы выбрать файл на локальном компьютере пользователя, нам нужно включить класс QFileDialog.

Нам нужен класс QFileDialog, чтобы диалоговое окно файла открывалось, когда мы нажимаем кнопку «Выбрать изображение» в нашей программе. Это позволяет нам искать на нашем компьютере существующий каталог.

Итак, мы создаем функцию void Widget::on_chooseImageButton_clicked(), которая выполняется при нажатии кнопки "Выбрать изображение".

В рамках этой функции мы видим только файлы в формате .jpg или .jpg. После выбора файла мы выводим полный путь к выбранному файлу в окне отладки.

Функция для выбора файлов — это функция getOpenFileName().

В атрибуте tr вы указываете текст, который должны видеть пользователи, в данном случае это "Изображения"

В этом же атрибуте вы указываете все типы файлов, которые должны отображаться при открытии этого каталога, в данном случае .jpg и .jpg

Затем мы выводим полный путь к выбранному файлу.

Итак, это может быть применено к любому типу расширения файла, так что выбор типа файла может быть ограничен желаемым типом файла. Это могут быть документы Microsoft Word, файлы PDF, файлы изображений, видеофайлы и т. д.

Это позволяет программисту или разработчику программного обеспечения принудительно выбрать нужный файл для определенного приложения.

А вот как выбирать и открывать определенные типы файлов в виджете Qt в C++.

Как реализовать Open Recent Files в Qt

В этой статье показано, как реализовать функциональность Open Recent Files в Qt. Это будет продемонстрировано на минималистичной реализации средства просмотра изображений. Ситуация показана на рисунке ниже:

Источники: совместимость с Qt5

Изображения для пробы


Примечание. Не используйте эту реализацию, если вам нужна надлежащая программа просмотра изображений. Этот код был написан для объяснения функциональности Open Recent, а не для просмотра изображений. Для просмотра изображений посмотрите этот официальный пример Qt.

Для реализации Open Recent нам необходимо представить следующие объекты и функции:

  • подменю QMenu* RecentFilesMenu, которое появится после того, как мы нажмем Open Recent
  • слот openRecent(), который вызывается каждый раз, когда мы выбираем файл из RecentFilesMenu
  • список QActions QList RecentFileActionList. Этот список действий представляет недавно открытые файлы
  • const int maxFileNr, представляющий максимальное количество файлов, которые могут храниться в RecentFilesMenu
  • QString currentFilePath, в котором хранится путь к недавно открытому файлу
  • функция loadFile(QString) и две вспомогательные функции AdjustForCurrentFile(QString) и updateRecentActionList(QString)

В текущей реализации необходимо подчеркнуть два важных момента:

  • Недавно открытые файлы представлены списком QActions. Количество действий в меню остается постоянным (т.е. 4 в нашем случае). Мы не создаем действия каждый раз, когда происходит изменение недавно открытых файлов. Сначала мы создаем постоянное количество QActions, а затем обновляем их текст, данные и видимость всякий раз, когда пользователь открывает другой файл. В начале все действия невидимы.
  • Имена и пути недавно открытых файлов хранятся в файле конфигурации, доступ к которому можно получить через QSettings. Они не хранятся как переменные-члены MainWindow! Это позволяет другим экземплярам программы также получать доступ к недавно открытым файлам.

Реализация MainWindow

Ниже вы можете увидеть объявление MainWindow с вышеупомянутыми требованиями. Подробнее об этих функциях вы можете прочитать ниже. Также обратите внимание на QLabel *imageLabel, в котором будет храниться изображение, которое мы загружаем из файла.

В конструкторе MainWindow мы инициализируем значение maxFileNr и создаем действия, меню и соединения.

В createActionsAndConnections() мы инициализируем стандартное действие openAction и 4 действия QAction, связанные с недавним списком действий файлов. Мы также подключаем openAction к слоту open(), а каждый из QActions в RecentFileActionList — к слоту openRecent().

В createMenus() мы создаем fileMenu и добавляем openAction.Мы также создаем RecentFilesMenu вместе с FileMenu и добавляем действия из списка RecentFileActionList. В конце мы вызываем updateRecentActionList(). Детали updateRecentActionList() будут обсуждаться позже.

Как реализовать open() и openRecent()

В open() мы сначала открываем QFileDialog. Если пользователь делает выбор, мы вызываем функцию loadFile(filePath). Точно так же в openRecentFile() мы сначала идентифицируем QAction, вызвавший слот, а затем загружаем соответствующий файл. Весь путь к файлу хранится в action->data(), имя файла без пути хранится в action->text().

Как реализовать loadFile(QString)

Приватная функция loadFile(QString) вызывается как слотом open(), так и openRecent(). Ответственность loadFile(QString):

  • для выдачи предупреждения, если файл отсутствует по исходному пути.
  • для загрузки изображения из пути к файлу и выдачи информации о возможных проблемах.
  • для вызова функции AdjustForCurrentFile(QString), которая обновляет значение закрытой переменной currentFilePath и список недавно открытых файлов в файле конфигурации.

Вы можете увидеть его реализацию ниже:

Как реализовать AdjustForCurrentFile(QString)

Как видно из рисунка выше, функция AdjustForCurrentFile(QString) вызывается функцией loadFile(QString). В обязанности AdjustForCurrentFile(QString) входит:

  • чтобы обновить значение закрытой переменной currentFilePath.
  • для обновления списка недавно открытых файлов в файле конфигурации. Это достигается с помощью QSettings.
  • для вызова updateRecentActionList(), который извлекает список недавно открытых файлов из файла конфигурации и изменяет текст, данные и видимость QActions в RecentFileActionList.

Если вы раньше не работали с файлами конфигурации и QSettings, сначала прочтите эту статью о QSettings. В нашем случае файл конфигурации создается и идентифицируется на основе информации, которую мы предоставили в main.cpp через setOrganizationName() и setApplicationName(). Вам не нужно искать файл конфигурации или знать, как он выглядит, так как мы собираемся получить необходимую информацию из того же места через QSettings в updateRecentActionList(). Обратите внимание, что перед добавлением вновь открытого файла в начало списка недавних файлов в файле конфигурации мы должны сначала удалить все его предыдущие вхождения с помощью removeAll().

Примечание. В обычном приложении у вас также будет несколько других действий, таких как «Создать», «Сохранить», «Сохранить как» (например, в этом официальном примере). В частности, в случае New вы, вероятно, создадите новый экземпляр MainWindow (т. е. у вас будет несколько экземпляров MainWindow). В таком случае вы хотели бы видеть, что обновление в меню последних файлов одного окна вызывает обновление в меню последних файлов всех других окон. Вот почему вы должны вызывать updateRecentActionList() во всех окнах верхнего уровня. Это показано ниже.

Однако имейте в виду, что если вы запускаете несколько экземпляров программы (т. е. несколько процессов), приведенный выше код вам не поможет.

Реализация updateRecentActionList()

Функция updateRecentActionList() вызывается всякий раз, когда мы загружаем (или сохраняем) файл. Функция обновляет RecentFileActionList в соответствии с недавно обновленным файлом конфигурации. Если список недавно открытых файлов содержит меньше файлов, чем разрешенное число (maxFileNr), остальные действия делаем невидимыми. Обратите внимание, что мы должны изменить как текст, так и данные QActions, чтобы учесть имя и путь вновь открытого файла.

Вот и все. Чтобы попробовать пример, вам нужно открыть пару файлов с помощью Open. Когда вы это сделаете, их имена появятся в разделе Открыть последние. Попробуйте добавить более 4 файлов или добавьте файл, который уже есть в списке. Вы увидите, что об этих делах хорошо позаботились!

В QuickTime Player есть элементы управления воспроизведением на экране, которые позволяют воспроизводить, приостанавливать, перематывать вперед или назад видео- или аудиофайл.

Вы также можете использовать элементы управления воспроизведением для воспроизведения файла на устройстве с поддержкой AirPlay, отображения видео в окне "картинка в картинке", предоставления общего доступа к файлу и изменения скорости воспроизведения.

Открыть файл

Чтобы открыть видео- или аудиофайл в приложении QuickTime Player на Mac, выполните одно из следующих действий:

Дважды щелкните файл в Finder.

Если ваши видео- или аудиофайлы находятся в iCloud Drive, нажмите iCloud Drive на боковой панели Finder, а затем дважды щелкните файл.См. раздел Использование iCloud Drive для хранения документов на Mac, iPhone и iPad.

Выберите «Файл» > «Открыть файл», затем выберите файл и нажмите «Открыть».

Если файл имеет более старый или сторонний формат, QuickTime Player может преобразовать его перед воспроизведением.

Совет. Вы также можете открыть файл, с которым недавно работали, выбрав «Файл» > «Открыть последние».

Воспроизвести файл

Вы можете воспроизводить файл и управлять им с помощью элементов управления воспроизведением, которые появляются, когда указатель находится над экраном. Вы можете ускорить воспроизведение вперед и назад, а также изменить скорость воспроизведения.

В приложении QuickTime Player на Mac откройте видео- или аудиофайл.

Переместите указатель в любом месте видео, чтобы отобразить элементы управления воспроизведением. (Элементы управления аудиофайлами всегда видны.)

Используйте элементы управления воспроизведением для воспроизведения видео- или аудиофайла; вы можете перетаскивать элементы управления, чтобы убрать их с дороги.

Если на вашем Mac есть панель Touch Bar, вы можете использовать элементы управления воспроизведением на панели Touch Bar.

Вы можете изменять скорость воспроизведения видео с помощью кнопки перемотки вперед или назад . Чтобы изменить скорость воспроизведения во время воспроизведения видео, нажимайте кнопку перемотки вперед или назад, пока видео не начнет воспроизводиться с нужной скоростью. Скорости воспроизведения включают 2x, 5x, 10x, 30x и 60x.

Вы можете изменять скорость воспроизведения с небольшим шагом (от 1,1x до 2x), нажимая кнопку перемотки вперед или назад во время воспроизведения, удерживая клавишу Option.

Вы также можете выбрать скорость воспроизведения перед воспроизведением видео. Нажмите кнопку «Общий доступ и скорость воспроизведения» , выберите «Скорость воспроизведения», затем выберите нужную скорость.

Если вы хотите, чтобы файл, который вы воспроизводите, отображался поверх всех других окон на вашем экране, выберите «Вид» > «Поверх всех», чтобы рядом с ним появилась галочка. Нажмите еще раз, чтобы отключить его.

Воспроизведение видео в режиме "картинка в картинке"

С помощью функции "картинка в картинке" вы можете воспроизводить видео в плавающем окне с изменяемым размером, чтобы вы могли видеть его на своем экране, пока выполняете другие задачи на своем компьютере.

В приложении QuickTime Player на Mac откройте видеофайл.

Переместите указатель в любом месте видео, чтобы отобразить элементы управления воспроизведением.

Нажмите кнопку "картинка в картинке" в элементах управления воспроизведением.

Вы можете перетащить окно "картинка в картинке" в другой угол экрана или перетащить любой край окна, чтобы изменить его размер.

Нажмите кнопку полноэкранного режима или кнопку закрытия, чтобы закрыть окно "картинка в картинке".

Воспроизведение файла в непрерывном цикле

Вы можете настроить непрерывное воспроизведение видео- или аудиофайла, чтобы он воспроизводился до конца, а затем начинался сначала.

Откройте видео- или аудиофайл, который вы хотите зациклить.

Выберите «Вид» > «Цикл», чтобы рядом с ним появилась галочка.

Нажмите кнопку воспроизведения в элементах управления воспроизведением.

Чтобы отключить непрерывное воспроизведение, выберите команду еще раз; галочка исчезнет.

Навигация по видео с помощью тайм-кода

Вы можете изменить отображение элементов управления воспроизведением, чтобы они отображали прошедшее время, количество кадров или временной код (в зависимости от характеристик видео).

Измените отображение элементов управления воспроизведением. Выберите «Вид» > «Отображение времени», затем выберите нужный вариант отображения.

Перейдите к определенному кадру с тайм-кодом. Выберите «Вид» > «Отображение времени» > «Перейти к тайм-коду», затем введите нужный тайм-код.

Вы также можете использовать сочетания клавиш или жесты, чтобы открывать, воспроизводить или приостанавливать файл и выполнять другие действия. См. Сочетания клавиш и жесты.

Читайте также: