Как добавить QWebEngineView в дизайнер Qt Creator-а?
Проблема заключается в том, что не могу добавить элемент класса QWebEngineView в дизайнере Qt Creator. Там(в дизайнере) такого класса просто не существует. Его можно добавить только через свой программный код, иначе у меня не получаеться
Ответы (2 шт):
Можно загружать .ui динамически через QUiLoader, переопределив метод createWidget, при обработке можно заменять стандартные виджеты или добавлять новые. Для добавления нового в .ui нужно создать виджет, нажать на нем правой кнопкой и выбрать "преобразовать", или что-то вроде того. Должна появиться таблица, в которую можно добавить имя класса, которое будет обрабатываться загрузчиком.
Можно вместо этого использовать QML, в котором есть WebEngineView, заодно получите и все достоинства QML.
И можно создать QML, состоящий из одного WebEngineView, и добавить его в .ui через QQuickWidget.
На практике, использование QUiLoader - это единственный оправданный способ использования ui, при использовании в качестве генератора c++ классов получается очень неудобный в поддержке код, проще и удобнее сразу писать на c++, особенно если реализовать простой builder для Layout. Что-то вроде такого:
makeVBox()
.add(makeVBox().aligment(Qt::AlignHCenter).add(new QLabel(tr(header))))
.add(addHBox()
.add(makeContent())
.add(makeMenu())
)
.bindTo(this); // this->setLayout(...)
Помещаете на форму обычный QWidget. Открываете ui в текстовом редакторе и ищите строчку <widget class="QWidget" name="someWidgetName">. Меняете QWidget на QWebEngineView. Сохраняете, перезагружаете ui.
Также советую ознакомиться с возможностью преобразования стандартных виджетов в виджеты, реализованные в коде. Нажать левой кнопкой по виджету и выбрать Преобразовать в....