Добрый день.
Можете подсказать как можно в строить окно Opencascade не посредственно в интерфейс QML.
Скидываю примеры как это можно сделать в виде отдельного окна (Для Windows и Linux)
https://github.com/ShabalinAnton/opencascade_qml
https://github.com/grotius-cnc/Linux-Embedded/releases/download/1.0.0/linux-opencascade-qml.tar.gz
Потребуется установить соответсвующие библиотеки Opencascade и сопутсвующие. Но если есть идее(примеры) как это можно сделать на "холодную" - буду очень рад.
Нa всякий случай скидываю готовые deb пакеты и сборку Linux со всем необходимым
https://github.com/grotius-cnc/Linux-Pro/releases/download/1.0.0/opencascade.deb
https://github.com/grotius-cnc/Linux-Pro/releases/download/1.0.0/kdl-kinematics.deb
https://sourceforge.net/projects/linux-11-pro/
Если нужно еще какая-то информации и ли какие-нибудь файлы - обращайтесь
А в первой с гитхаба разве не в QML встроено?
Честно сказать я не проверял пример для Windows. Только для Linux и по его образу и подобию сделал. https://www.youtube.com/watch?v=7Frxfc7F00M
На всякий случай уточню: Я имею ввиду запускать окно opencascade в область интерфейса, а не в виде отдельного окна.
Я открыл Виндусовский проект в linux хотел посмотреть как это все дело отображается в дизайнере. Но там выскакивает ошибка не связанная с ОС
Ругается на anchors.fill: parent (хотя это вроде как системная строка). В моем случае если ее закоментировать - то все работает. Но в виде отдельного окна.
@theroslyak я по исходникам просто глянул, там OcctView может использоваться как обычный компонент внутри QML.
Повторюсь: в моем случаю все отображается в виде отдельного окна. Возможности как-то задать параметры этому компоненту приводят к ошибке.
https://github.com/grotius-cnc/Linux-Embedded/releases/download/1.0.0/linux-opencascade-qml.tar.gz
В этом примере минимум. Если на этом примере получиться сделать то
https://dropmefiles.com/qr2Rj - врятли получиться его запустить, но может найдешь что тебе нужно
@theroslyak надо попробовать в качестве window_handle использовать winId текущего окна приложения. Для получения что-то вроде:
QObject* m_rootObject = engine.rootObjects().first(); if(m_rootObject) { QWindow *window = qobject_cast<QWindow *>(m_rootObject); if(window) { WId wid = window->winId(); } }
Затем его сюда:
WId window_handle = (WId) winId(); #ifdef _WIN32 Handle(WNT_Window) wind = new WNT_Window((Aspect_Handle) window_handle); #else Handle(Xw_Window) wind = new Xw_Window(m_display_donnection, (Window) window_handle); #endif
Код не проверял.
Не чего не понял. Я просто пихнул этот код - не чего не изменилось