Spec-Zone.ru › Qt 5.6

Класс QDesktopServices

Класс QDesktopServices предоставляет методы для доступа к общим сервисам рабочего стола. Подробнее...

Заголовок: #include <QDesktopServices>
qmake: QT += gui
С тех пор: Qt 4.2
  • Список всех членов, включая унаследованные члены
  • Устаревшие члены

Статические публичные члены

bool openUrl(const QUrl &url)
void setUrlHandler(const QString &scheme, QObject *receiver, const char *method)
void unsetUrlHandler(const QString &scheme)

Подробное описание

Класс QDesktopServices предоставляет методы для доступа к общим сервисам рабочего стола.

Многие среды рабочего стола предоставляют сервисы, которые могут использоваться приложениями для выполнения общих задач, таких как открытие веб-страницы, согласованным образом и с учётом предпочтений пользователя.

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

Функция openUrl() используется для открытия файлов, расположенных по произвольным URL-адресам, в внешних приложениях. Для URL-адресов, соответствующих ресурсам локальной файловой системы (где схема URL — "file"), будет использовано подходящее приложение для открытия файла; в противном случае будет использован веб-браузер для получения и отображения файла.

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

Обработчики URL

Поведение функции openUrl() может быть настраиваемо для отдельных схем URL, чтобы приложения могли переопределять поведение по умолчанию для определённых типов URL-адресов.

Механизм диспетчеризации позволяет использовать только один пользовательский обработчик для каждой схемы URL; он устанавливается с помощью функции setUrlHandler(). Каждый обработчик реализуется как слот, который принимает только один аргумент QUrl.

Существующие обработчики для каждой схемы могут быть удалены с помощью функции unsetUrlHandler(). Это возвращает поведение обработки для данной схемы к поведению по умолчанию.

Эта система упрощает реализацию, например, системы справки. Справка может быть предоставлена в метках и текстовых браузерах с помощью URL-адресов help://myapplication/mytopic, и при регистрации обработчика становится возможным отобразить текст справки внутри приложения:

class MyHelpHandler : public QObject
{
    Q_OBJECT
public:
    ...
public slots:
    void showHelp(const QUrl &url);
};

QDesktopServices::setUrlHandler("help", helpInstance, "showHelp");

Если внутри обработчика вы решите, что не можете открыть запрашиваемый URL, вы можете просто снова вызвать QDesktopServices::openUrl() с тем же аргументом, и он попытается открыть URL с помощью соответствующего механизма для среды рабочего стола пользователя.

Примечание: Начиная с Qt 5, storageLocation() и displayName() заменены функциональностью, предоставляемой классом QStandardPaths.

См. также QSystemTrayIcon, QProcess и QStandardPaths.

Документация по функциям-членам

[static] bool QDesktopServices::openUrl(const QUrl &url)

Открывает заданный url в соответствующем веб-браузере для среды рабочего стола пользователя и возвращает true в случае успеха; в противном случае возвращает false.

Если URL является ссылкой на локальный файл (то есть схема URL — "file"), он будет открыт с помощью подходящего приложения, а не веб-браузера.

Следующий пример открывает файл в файловой системе Windows, расположенный по пути, содержащему пробелы:

QDesktopServices::openUrl(QUrl("file:///C:/Documents and Settings/All Users/Desktop", QUrl::TolerantMode));

Если указан mailto URL, для открытия окна составления письма будет использован почтовый клиент пользователя, аналогично тому, как обрабатываются ссылки mailto в веб-браузере.

Например, следующий URL содержит получателя (user@foo.com), тему (Test) и тело сообщения (Just a test):

mailto:user@foo.com?subject=Test&body=Just a test

Предупреждение: Хотя многие почтовые клиенты могут отправлять вложения и поддерживают Unicode, пользователь может настроить свой клиент без этих функций. Кроме того, у некоторых почтовых клиентов (например, Lotus Notes) есть проблемы с длинными URL-адресами.

Предупреждение: Возвращаемое значение true указывает, что приложение успешно запросило операционную систему открыть URL-адрес во внешнем приложении. Внешнее приложение всё равно может не запуститься или не открыть запрашиваемый URL-адрес. Этот результат не будет сообщён обратно приложению.

См. также setUrlHandler().

[static] void QDesktopServices::setUrlHandler(const QString &scheme, QObject *receiver, const char *method)

Устанавливает обработчик для заданной scheme, который будет обработчиком method, предоставляемым объектом receiver.

Эта функция предоставляет способ настройки поведения openUrl(). Если openUrl() вызывается с URL-адресом с указанной scheme, то вместо запуска внешнего приложения в QDesktopServices вызывается данный method объекта receiver.

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

Если с помощью setUrlHandler() устанавливается новый обработчик для схемы, для которой уже есть обработчик, существующий обработчик просто заменяется новым. Так как QDesktopServices не принимает обработчики на собственность, никакие объекты не удаляются при замене обработчика.

Обратите внимание, что обработчик всегда будет вызываться из того же потока, что и вызов QDesktopServices::openUrl().

См. также openUrl() и unsetUrlHandler().

[static] void QDesktopServices::unsetUrlHandler(const QString &scheme)

Удаляет ранее установленный обработчик URL для указанной scheme.

См. также setUrlHandler().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qdesktopservices.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API