Класс 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-адрес, для открытия окна составления сообщения с опциями, указанными в 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-адрес. Этот результат не будет сообщен обратно приложению.
Предупреждение: URL-адреса, переданные этой функции на iOS, не будут загружаться, если их схемы не указаны в ключе LSApplicationQueriesSchemes файла Info.plist приложения. Для получения дополнительной информации см. документацию Apple Developer для canOpenURL(_:). Например, следующие строки разрешают URL-адреса со схемой HTTPS:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>https</string>
</array> См. также 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.11/qdesktopservices.html