Spec-Zone.ru › Qt 5.9

Класс 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));

Если указан URL-адрес 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/qt-5.9/qdesktopservices.html

Spec-Zone.ru

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