Qt как открыть ссылку в браузере

Обновлено: 04.07.2024

Я не уверен, что это лучший способ, но Rhythmbox с libimobiledevice (оба установлены по умолчанию в lucid) работает для меня. Однако есть несколько сбоев, которые нужно знать:

Нет полнофункциональной синхронизации. Вам нужно вручную перетащить отдельные песни на iPhone. Примерно через 10 секунд после того, как Rhythmbox передает песни, экран iPhone переключается на «Синхронизация в процессе». Вам нужно подождать, пока экран не исчезнет, ​​прежде чем вы выбросите iPhone, или музыка не будет синхронизироваться. Это обычно занимает 5-10 минут для меня (больше, если я переношу много песен). При первом запуске приложения «Музыка» на iPhone вам придется подождать, пока он перестроит библиотеку.

2 ответа

Чтобы открыть URL-адрес, вы должны использовать xdg-open, который будет использовать ваш браузер для просмотра URL-адреса.

Чтобы открыть его после запуска, вы должны сделать то, что предлагает Geppettvs D'Constanzo:

1113 Для этого случая я собираюсь представить себе пейзаж. Прежде всего, скажем, мне нужен сценарий для открытия веб-браузера в определенных видео (-ах) Youtube, и каждый раз, когда он открывается при загрузке, мне нужно, чтобы видео воспроизводилось произвольно разной продолжительности.

Прежде всего давайте создадим файл, я называю это «youtuviewer.sh», внутри которого я собираюсь установить следующие части кода:

Я объясню это быстро :

  1. Строка 1: исполняемый файл вызовет bash для интерпретации инструкций, после которых
  2. Строка 2: chromium-browser запустится (его можно заменить firefox или любым другим веб-браузером ). Браузер откроет ссылки на YouTube в списке на отдельных вкладках, список должен быть разделен пробелом. Амперсанд (& amp;) сообщит, что после выполнения этой строки остальная часть сценария должна быть выполнена, а экземпляр браузера хрома должен быть запущен.
  3. Строка 3: мы собираемся сгенерировать случайное число от 30 до 90 и сохранить его в переменной с именем «n». Это будет количество секунд, которое мы будем использовать в следующих строках.
  4. Строка 4: мы пишем на терминале, сколько секунд будет использоваться на основе случайного числа.
  5. Строка 5: мы заставляем скрипт «уснуть» на «n» количество секунд.
  6. Строка 6: мы убиваем браузер хрома, чтобы продолжить. Эта строка будет выполнена только после того, как Строка 5 закончит ожидание («спящий») количество секунд, хранящихся в переменной «n».
  7. Строка 7: мы празднуем высказывание "все готово!" в терминале.

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

Мы собираемся установить права доступа к файлу через ваш любимый файловый браузер (на мой взгляд, nautilus) или через терминал. Смотрите это: Как мне запускать .sh файлы?

Теперь нам нужно настроить файл для запуска при загрузке, мы можем добиться этого с помощью cron (см. Это: Как настроить задание Cron? ) или с помощью диалогового окна «Запуск приложений» (см .: Как добавить приложение в меню запуска приложений? ).

Это самый простой способ сделать то, что давайте посмотрим на правки @ImaginaryRobots.

Ну кто из нас не хочет написать свой браузер? Да ладно, не отпирайтесь мысли про браузер, точно были. Так вот, Qt имеет класс QWebView, который позволяет работать с браузерным движком webkit, на котором написан chromium, а соответственно и chrome и многие другие браузеры. Поэтому практически использовав десяток строк кода можно сделать приложение, которое сможет отобразить страницу веб-сайта.

Итак, приложение будет следующим. Имеется адресная строка QLineEdit и виджет QWebView. При вводе адреса сайта в адресную строку и нажатии клавиши Enter будет запускаться получение страницы сайта и отображение её в QWebView. При клике по ссылке на странице адрес ссылки будет отображаться в адресной строке и будет загружаться новая странице в виджете.

Структура проекта для работы с QWebView

  • QWebViewExample.pro - профайл проекта;
  • main.cpp - основной файл исходных кодов проекта;
  • mainwindow.h - заголовочный файл главного окна приложения;
  • mainwindow.cpp - файл исходных кодов главного окна приложения;
  • mainwindow.ui - форма главного окна приложения.

QWebViewExample.pro

Для работы с QWebView необходимо подключить два модуля: webkit и webkitwidgets.

mainwindow.h

В заголовочном файле необходимо объявить два слота:

slotEnter() - для обработки нажатия клавиши Enter в адресной строки браузера;
slotLinkClicked(QUrl url) - для обработки клика по ссылке на странице браузера.

Также необходимо подключить библиотеки QWebView и QUrl.

mainwindow.cpp

Для правильной обработки клика по ссылке необходимо установить ручную обработку данного события методом setLinkDelegationPolicy и подключить соответствующий слот к сигналу linkClicked().

Исправление ошибок с SSL

Скорее всего у Вас возникнут ошибки следующего вида при сборке проекта:

Решение этой проблемы кроется в том, чтобы подбросить нужные библиотеки в папку, где располагаются библиотеки Qt5Network.dll и Qt5Networkd.dll. Этими библиотеками являются libeay32.dll и ssleay32.dll.

  1. Идём на следующий сайт
  2. Ищем там light сборку OpenSSL
  3. И качаем нужную версию 32 или 64 бита (в случае с mingw качаем 32-х разрядную сборку).
  4. Далее устанавливаем OpenSSL в производную папку отметив пункт "The OpenSSL binaries (\bin) directory"
  5. После чего ищем библиотеки libeay32.dll и ssleay32.dll и перебрасываем их в папку с Qt к библиотекам Qt5Network.dll и Qt5Networkd.dll.

После этого выше перечисленные ошибки пропадут.

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

Ссылка на скачивание проекта в zip-архиве: qwebviewexample.zip

Видеоурок

Интересно, как открыть ссылку в браузере пользователя по умолчанию с помощью Qt (это откроет ее на всех платформах (Win Mac Lin))?

3 ответа

Я хотел бы открыть веб-сайт в веб-браузере пользователя по умолчанию, однако, поскольку url определяется пользователем, я также хотел бы запретить им делать что-либо, кроме открытия веб-сайта. Я видел, как люди используют Process.Start(url); для открытия сайта в браузере по умолчанию, но поскольку.

В документе: QDesktopServices

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

Вы можете попробовать этот код

Прочитайте QDesktopServices и QUrl , чтобы получить дополнительную информацию.

вы ищете openUrl() в классе desktop services

Похожие вопросы:

Я работаю над приложением, которое реализовано как HTA. У меня есть ряд ссылок, которые я хотел бы открыть в веб-браузере системы по умолчанию. Использование <a href=url target=_blank>.

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

Сценарий : Виджет боковой панели в клиенте Lotus Notes открывает XPage из URL, настроенных мастером виджетов. Это работает очень хорошо (SSO, скорость). Некоторые ссылки в этом XPage указывают на.

Мне нужно точно так же , как я могу открыть ссылку в веб-браузере по умолчанию из HTA? , но с ограничением, что ссылка находится внутри iframe. iframe загружает страницу на наш сервер. Идея: может.

Я хочу показать графическую рекламу в своей программе, я использую инструмент веб-браузера и ставлю ссылку на рекламу. Я хочу открыть рекламные ссылки в браузере пользователя по умолчанию. В.

Я использую flutter_webview_plugin и хотел бы открыть ссылку; не в моем webview, а в браузере пользователя. Когда я использую StreamSubscription с String , приложение слушает только url из.

Репутация: 0



Просмотр профиля

Репутация: 2

С помощью регулярных выражений(QRegExp) определить ссылку(гуглить, есть много примеров), затем в textedit заюзать <a href. а потом при нажатом Ctrl и клике, определять в ссылке ли находиться курсор и запускать браузер через QProcess. Примерно так..



Просмотр профиля

Репутация: 0



Просмотр профиля

Репутация: 0

нифига себе как вс е сложно)))

а вот QTextBrowser уже что то проще выдает) только щелкая по ссылке ничего не запускает и сслка пропадает)

в принципе QTextBrowser нормально подойдет, как только теперь запусать процесс запуска инет браузера?

вот вывел в текст браузер ссылку

как быть дальше?



Просмотр профиля

Репутация: 0



Просмотр профиля

Репутация: 0

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



Просмотр профиля

Репутация: 0



Просмотр профиля

Репутация: 0

да все, разобрался, спасибо тебе большое))) нагуглил)))

но смотри, если я тыкаю по ссылке, то как она запустит эту строку .



Просмотр профиля

Репутация: 0

void QTextBrowser::sourceChanged ( const QUrl & src ) [signal]
This signal is emitted when the source has changed, src being the new source.

Source changes happen both programmatically when calling setSource(), forward(), backword() or home() or when the user clicks on links or presses the equivalent key sequences.

с тебя 3 спасибо



Просмотр профиля

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