R
Rumata72304 березня 2018 р. 04:26

Прекращается рендер открываемого через QWebEngine сайта.

Сразу скажу - я начинающий в этом деле.
Проблема следующая:
Открываю сайт в отдельной форме, используя QWebEngine.

Сначала сайт грузился очень медленно, и выдавал следующую ошибку в консоли (строк 20 подряд):
[10032:756:0304/185603.970:ERROR:gles2_cmd_decoder.cc(8585)] [.Offscreen-For-WebGL-000001A658B2FD90]GL ERROR :GL_INVALID_OPERATION : glRenderbufferStorageMultisampleCHROMIUM:
Решил это путем использования OpenGL (как я понял)
QCoreApplication::setAttribute(Qt::AA_UseOpenGLES);
После этого сайт начал грузиться в разы быстрее, но при попытке, например, масштабировать - сайт виснет наглухо, и появляется следующая ошибка в консоли:
[3012:2828:0304/190817.963:ERROR:frame_sink_provider_impl.cc(34)] No RenderWidgetHost exists with id 13in process 3
[3012:2828:0304/190817.963:ERROR:frame_sink_provider_impl.cc(34)] No RenderWidgetHost exists with id 13in process 3
[3012:2828:0304/190829.013:ERROR:frame_sink_provider_impl.cc(34)] No RenderWidgetHost exists with id 21in process 3
[3012:2828:0304/190829.013:ERROR:frame_sink_provider_impl.cc(34)] No RenderWidgetHost exists with id 21in process 3
Подскажите, как это решить, пожалуйста.
Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

Вам це подобається? Поділіться в соціальних мережах!

16
Evgenii Legotckoi
  • 04 березня 2018 р. 05:55
Ошибка может быть как из-за нестабильной сборки библиотеки, так либо из-за проблем с железом конкретно на вашем ПК. А также из-за того, что написали программный код некорректно.

Так что показывайте код.
Также во вложении архив с минимальным примеров для QWebEngineView
    R
    • 04 березня 2018 р. 06:48

    Подключаю webenginewidgets в .pro файле.

    В .cpp следующее:

    ui->preview->load(QUrl("https://pubgmap.io/ru/"));
    ui->preview->show();

    *preview* - объект QWebEngineView, взятый из базового примера в Qt.
      Evgenii Legotckoi
      • 04 березня 2018 р. 15:29

      то есть вы создали этот QWebEngineView через графический дизайнер?
      Что касается базового примера, то какой из них? Самый базовый - это minimal, который состоит всего из двух файлов, main.cpp и профайла проекта. А по факту этих примеров в Qt Creator будет десяток и я понятия не имею, какой из них вы называете базовым. Я не буду запускать каждый пример, чтобы найти это preview. Тем более, что обычный QWebEngineView.


      Я прикрепил к предыдущему сообщению архив с небольшим проектом, Вы пробовали его запустить?

      Что касается двух ваших строчек кода, то должно работать, не видя остальной части или всего вашего проекта сказать ничего не возможно. Нужно как минимум попытаться запустить на другом ПК, возможно, что у вас проблемы с графической подсистемой, или просто ещё что-то криво написано в коде.
        R
        • 04 березня 2018 р. 20:32

        Название этого учебного проекта "WebEngine Markdown Editor Example".

        В его форме есть этот объект.

        Да, я пробовал запустить сайт с Вашего проекта - та же проблема.

        Сомневаюсь, что проблема с графической подсистемой.
        Остальной код никак не связан с моей проблемой, т.к. все это реализовывается в отдельной форме со своими *.h и *.cpp.
          Evgenii Legotckoi
          • 05 березня 2018 р. 03:23
          • (відредаговано)

          Всё-таки это проблема с графикой на вашем ПК, а конкретно с драйверами, которые отвечают за WebGL.

          Если бы это была проблема в коде, то у меня бы эта ошибка также проявилась бы.

          Я поискал похожие случаи и зачастую везде советуется в первую очередь обновить драйвера, причём проблема с графикой Intel. У вас случаем не NVidia видеокарта?
          Если код состоит из пары тех строчек, что Вы привели, и проблема проявляется при работе с OpenGL, то сдаётся мне, что машинка у вас достаточно старая, либо драйвера давно не обновляли.
            R
            • 05 березня 2018 р. 03:55
            • (відредаговано)

            GT 740M, последние драйвера.


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

            Не понимаю, почему из самого Qt она никак не хотела нормально работать. Может быть разница в дебаг и релиз версии сборки?

            Появилась новая проблема - на эти 2 строчки программа требует 11 новых библиотек (раньше хватало 2), общим весом 81.1 мб, что весьма напрягает. Есть способ сократить вес? Вынести только нужные функции из этих библиотек? Я не знаю как это делается, и делается ли это вообще. Подскажите, пожалуйста, в какую сторону копать.

              Evgenii Legotckoi
              • 05 березня 2018 р. 04:07

              Я могу подсказать куда копать, но сам туда ещё не копал, необходимости не было.

              В Qt 5.8 внедрили Qt Configuration Tool , который позволяет собирать сам Qt только с необходимым функционалом, это называется Qt Lite . Но если учесть, что у вас основной вес тянет Qt5WebEngineCore.dll , то занятие это будет довольно сомнительным. Смысл в том, что если хотите писать свой браузер, то придётся использовать Qt5WebEngineCore.dll , а он весит 69 мБ, так что вряд ли вы сможете уменьшить весь пакета меньше 75 Мб.
              Но в тоже время, я сомневаюсь, что он очень сильно вырастет в дальнейшем. Для этого придётся написать достаточно много кода, только если вы не прикрутите туда ещё какие-нибудь тяжеловесные библиотеки.

              Так что я рекомендовал бы сейчас вам не задумываться над этим, а просто писать свой проект. А ту проблему размера оставить на поздний период, если это конечно будет для вас проблемой уже.
                R
                • 05 березня 2018 р. 04:17
                • (відредаговано)

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


                Дело в том, что я их подкинул потому что при запуске *.exe файла он выдавал ошибку из-за отсутствия библиотеки. Сомневаюсь, что использование Qt Configuration Tool дало бы мне иной результат.
                Я могу понять требование библиотек, связанных с сетью и ядром самого Qt5WebEngine , но Qt5PrintSupport наводит на мысль, что само подключение webenginewidgets требует определенный пул библиотек, даже если я их не использую никак. Хотя я совершенно не понимаю необходимость Qt5PrintSupport здесь.

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

                Либо, возможен ли способ подключения только необходимых библиотек в самом коде? Где-то видел про функцию #pragma для этого, но так и не понял как это конкретно делается.
                  Evgenii Legotckoi
                  • 05 березня 2018 р. 04:30
                  • (відредаговано)

                  И вновь охота за ведьмами из-за 3 мБ HDD ))))


                  Но тем не менее есть корректный способ отключить поддержку печати.
                  #pragma - это вам не потребуется.

                  А вот если добавить следующие дефайны в pro файл проекта, то библиотека не должна потребоваться.
                  DEFINES                += QT_NO_PRINTER QT_NO_PRINTDIALOG
                    R
                    • 05 березня 2018 р. 04:57

                    Не помогло. Ругается при запуске.


                    И вновь охота за ведьмами из-за 3 мБ HDD ))))
                    Даже если так - я все равно при этом получаю какие-то новые знания, которые, возможно, могут чем-то помочь позже. Это делает данный интерес менее бесполезным ;)

                    А по поводу альтернативных реализаций. Помимо QWebEngine не предусмотрены функции попроще ?)

                      Evgenii Legotckoi
                      • 05 березня 2018 р. 05:11

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


                      Что касается способа попроще вместо QWebEngine , то скорее нет, чем да. Дело в том, что вам требуется рабочая страница, а значит и поддержка всех скриптов должна быть, а для этого требуется браузерный движок. И в данном случае это самый простой вариант.

                      Можно, конечно, заморочиться с QTextView , поскольку он поддерживает html-вёрстку , НО поддержка весьма скромная, и скрипты работать не будут, также как не будет работать переход по ссылкам.

                      Полагаю, что тогда использование библиотеки Qt5PrintSupport можно будет выковырять только кастомной сборкой самой библиотеки Qt, чем обычно 98 процентов программистов не занимается, поскольку в нынешнее время эти 10-15 мБ ничего не решают, если только Вы не занимаетесь Embed разработкой, но для этого у Qt есть свои решения для коммерческой лицензии. В том числе и поддержка всякого рода встраиваемых систем типо Yocto.

                      К сожалению, не могу указать Вам гарантированно правильного пути, только направление, чтобы Вы составили своё мнение, поскольку один человек не может охватить всё и сразу. Но по факту вырезание лишнего функционала из Qt раньше делали через статическую сборку, сейчас ещё и через Qt Configuration Tool.
                        R
                        • 05 березня 2018 р. 05:16
                        • (відредаговано)

                        Понял вас. Спасибо за помощь )


                        Правда, появилась новая проблема. Скинул программу другу, и при попытке им запустить окно (нажатием кнопки),  в котором открывается сайт, программа просто зависает. Хотя у меня работает без проблем.
                        Как узнать, в чем проблема? Набор библиотек такой же у обоих.

                          Evgenii Legotckoi
                          • 05 березня 2018 р. 05:21
                          • Відповідь була позначена як рішення.

                          Попробуйте для начала собрать библиотеки с помощью windeployqt

                          Вполне возможно, что за счёт переменных PATH у вас несколько больше библиотек, чем у вашего товарища.
                            R
                            • 06 березня 2018 р. 01:18
                            • (відредаговано)

                            Действительно, помогло. Спасибо! Правда папка "потолстела" на 100мб )


                            А по поводу отключения через defines - есть где-то их список? Или где искать то эти строки, которые отключают.
                              Evgenii Legotckoi
                              • 06 березня 2018 р. 01:42

                              Самого списка дефайнов я не находил, это просто добавляемые переменные при компиляции. А те переменные, которые я привёл - это из стандартных, которые часто попадаются в примерах. Но по видимому они не убирают полностью необходимость библиотеки Qt5PrintSupport.


                              А так есть список различных настроечных параметров для qmake.
                              Вот например, что касается настройки qmake
                                R
                                • 06 березня 2018 р. 03:27

                                Спасибо, почитаю.

                                  Коментарі

                                  Only authorized users can post comments.
                                  Please, Log in or Sign up
                                  AD

                                  C++ - Тест 004. Указатели, Массивы и Циклы

                                  • Результат:50бали,
                                  • Рейтинг балів-4
                                  m
                                  • molni99
                                  • 26 жовтня 2024 р. 01:37

                                  C++ - Тест 004. Указатели, Массивы и Циклы

                                  • Результат:80бали,
                                  • Рейтинг балів4
                                  m
                                  • molni99
                                  • 26 жовтня 2024 р. 01:29

                                  C++ - Тест 004. Указатели, Массивы и Циклы

                                  • Результат:20бали,
                                  • Рейтинг балів-10
                                  Останні коментарі
                                  ИМ
                                  Игорь Максимов22 листопада 2024 р. 11:51
                                  Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                                  Evgenii Legotckoi
                                  Evgenii Legotckoi31 жовтня 2024 р. 14:37
                                  Django - Урок 064. Як написати розширення для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
                                  A
                                  ALO1ZE19 жовтня 2024 р. 08:19
                                  Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                                  ИМ
                                  Игорь Максимов05 жовтня 2024 р. 07:51
                                  Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                                  d
                                  dblas505 липня 2024 р. 11:02
                                  QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                                  Тепер обговоріть на форумі
                                  Evgenii Legotckoi
                                  Evgenii Legotckoi24 червня 2024 р. 15:11
                                  добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
                                  t
                                  tonypeachey115 листопада 2024 р. 06:04
                                  google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
                                  NSProject
                                  NSProject04 червня 2022 р. 03:49
                                  Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
                                  9
                                  9Anonim25 жовтня 2024 р. 09:10
                                  Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

                                  Слідкуйте за нами в соціальних мережах