R
Rumata723March 4, 2018, 4:26 a.m.

Прекращается рендер открываемого через 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
Подскажите, как это решить, пожалуйста.
We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

              Evgenii Legotckoi
              • March 5, 2018, 4:07 a.m.

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

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

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

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


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

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

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

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


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

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

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


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

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

                      Evgenii Legotckoi
                      • March 5, 2018, 5:11 a.m.

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


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

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

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

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

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


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

                          Evgenii Legotckoi
                          • March 5, 2018, 5:21 a.m.
                          • The answer was marked as a solution.

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

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

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


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

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


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

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

                                  Comments

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

                                  C ++ - Test 004. Pointers, Arrays and Loops

                                  • Result:50points,
                                  • Rating points-4
                                  m

                                  C ++ - Test 004. Pointers, Arrays and Loops

                                  • Result:80points,
                                  • Rating points4
                                  m

                                  C ++ - Test 004. Pointers, Arrays and Loops

                                  • Result:20points,
                                  • Rating points-10
                                  Last comments
                                  i
                                  innorwallNov. 15, 2024, 8:26 a.m.
                                  Qt/C++ - Lesson 031. QCustomPlot – The build of charts with time buy generic priligy We can just chat, and we will not lose too much time anyway
                                  i
                                  innorwallNov. 15, 2024, 6:03 a.m.
                                  Qt/C++ - Lesson 060. Configuring the appearance of the application in runtime I didnt have an issue work colors priligy dapoxetine 60mg revia cost uk August 3, 2022 Reply
                                  i
                                  innorwallNov. 14, 2024, 11:07 p.m.
                                  Circuit switching and packet data transmission networks Angioedema 1 priligy dapoxetine
                                  i
                                  innorwallNov. 14, 2024, 10:42 p.m.
                                  How to Copy Files in Linux If only females relatives with DZ offspring were considered these percentages were 23 order priligy online uk
                                  i
                                  innorwallNov. 14, 2024, 8:09 p.m.
                                  Qt/C++ - Tutorial 068. Hello World using the CMAKE build system in CLion ditropan pristiq dosing With the Yankees leading, 4 3, Rivera jogged in from the bullpen to a standing ovation as he prepared for his final appearance in Chicago buy priligy pakistan
                                  Now discuss on the forum
                                  i
                                  innorwallNov. 14, 2024, 2:39 p.m.
                                  добавить qlineseries в функции priligy amazon canada 93 GREB1 protein GREB1 AB011147 6
                                  i
                                  innorwallNov. 11, 2024, 9:55 p.m.
                                  Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
                                  9
                                  9AnonimOct. 25, 2024, 7:10 p.m.
                                  Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

                                  Follow us in social networks