R
Rumata7234 марта 2018 г. 4: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
  • 4 марта 2018 г. 5:55
Ошибка может быть как из-за нестабильной сборки библиотеки, так либо из-за проблем с железом конкретно на вашем ПК. А также из-за того, что написали программный код некорректно.

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

              Evgenii Legotckoi
              • 5 марта 2018 г. 4:07

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

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

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

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


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

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

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

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


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

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

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


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

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

                      Evgenii Legotckoi
                      • 5 марта 2018 г. 5:11

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


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

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

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

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

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


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

                          Evgenii Legotckoi
                          • 5 марта 2018 г. 5:21
                          • Ответ был помечен как решение.

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

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

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


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

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


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

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

                                  Комментарии

                                  Только авторизованные пользователи могут публиковать комментарии.
                                  Пожалуйста, авторизуйтесь или зарегистрируйтесь
                                  e
                                  • ehot
                                  • 1 апреля 2024 г. 0:29

                                  C++ - Тест 003. Условия и циклы

                                  • Результат:78баллов,
                                  • Очки рейтинга2
                                  B

                                  C++ - Тест 002. Константы

                                  • Результат:16баллов,
                                  • Очки рейтинга-10
                                  B

                                  C++ - Тест 001. Первая программа и типы данных

                                  • Результат:46баллов,
                                  • Очки рейтинга-6
                                  Последние комментарии
                                  k
                                  kmssr9 февраля 2024 г. 5:43
                                  Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                                  АК
                                  Анатолий Кононенко5 февраля 2024 г. 12:50
                                  Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                                  EVA
                                  EVA25 декабря 2023 г. 21:30
                                  Boost - статическая линковка в CMake проекте под Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
                                  J
                                  JonnyJo25 декабря 2023 г. 19:38
                                  Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
                                  G
                                  Gvozdik19 декабря 2023 г. 8:01
                                  Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
                                  Сейчас обсуждают на форуме
                                  a
                                  a_vlasov14 апреля 2024 г. 16:41
                                  Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Евгений, добрый день! Такой вопрос. Верно ли следующее утверждение: Любое Android-приложение, написанное на Java/Kotlin чисто теоретически (пусть и с большими трудностями) можно написать и на C+…
                                  Павел Дорофеев
                                  Павел Дорофеев14 апреля 2024 г. 12:35
                                  QTableWidget с 2 заголовками Вот тут есть кастомный QTableView с многорядностью проект поддерживается, обращайтесь
                                  Mm
                                  Mind mingles12 апреля 2024 г. 10:42
                                  ASO Service Forum: Enhancing App Visibility and Reach Welcome to the ASO Service Forum, your ultimate destination for insights, discussions, and strategies revolving around App Store Optimization. ASO (App Store Optimization) is paramoun…
                                  f
                                  fastrex4 апреля 2024 г. 14:47
                                  Вернуть старое поведение QComboBox, не менять индекс при resetModel Добрый день! У нас много проектов в которых используется QComboBox, в версии 5.5.1, когда модель испускает сигнал resetModel, currentIndex не менялся. В версии 5.15 при resetModel происходит try…
                                  P
                                  Pisych27 февраля 2023 г. 15:04
                                  Как получить в массив значения из связанной модели? Спасибо, разобрался:))

                                  Следите за нами в социальных сетях