Top.Mail.Ru
Уведомления
Очистить все

[Решено] Окно Opencascade в интерфейсе QML

(@theroslyak)
Level 1

Добрый день.

Можете подсказать как можно в строить окно 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/

Если нужно еще какая-то информации и ли какие-нибудь файлы - обращайтесь 

Цитата
Создатель темы Размещено : 18.05.2022 15:27
Aveal
(@aveal)
Top level Admin

А в первой с гитхаба разве не в QML встроено?

ОтветитьЦитата
Размещено : 19.05.2022 09:45
(@theroslyak)
Level 1

@aveal 

Честно сказать я не проверял пример для Windows. Только для Linux и по его образу и подобию сделал. https://www.youtube.com/watch?v=7Frxfc7F00M

На всякий случай уточню:  Я имею ввиду запускать окно opencascade в область интерфейса, а не в виде отдельного окна.

Я открыл Виндусовский проект в linux хотел посмотреть как это все дело отображается в дизайнере. Но там выскакивает ошибка не связанная с ОС

Ругается на anchors.fill: parent (хотя это вроде как системная строка). В моем случае если ее закоментировать - то все работает. Но в виде отдельного окна.

ОтветитьЦитата
Создатель темы Размещено : 19.05.2022 11:11
Aveal
(@aveal)
Top level Admin

@theroslyak я по исходникам просто глянул, там OcctView может использоваться как обычный компонент внутри QML.

ОтветитьЦитата
Размещено : 19.05.2022 12:19
(@theroslyak)
Level 1

@aveal 

Повторюсь: в моем случаю все отображается в виде отдельного окна. Возможности как-то задать параметры этому компоненту приводят к ошибке.

Screenshot 2022 05 19 16 29 25

 

ОтветитьЦитата
Создатель темы Размещено : 19.05.2022 13:33
Aveal
(@aveal)
Top level Admin

@theroslyak можешь .qml полный выложить?

ОтветитьЦитата
Размещено : 19.05.2022 13:36
(@theroslyak)
Level 1

https://github.com/grotius-cnc/Linux-Embedded/releases/download/1.0.0/linux-opencascade-qml.tar.gz

 В этом примере минимум.  Если на этом примере получиться сделать то

https://dropmefiles.com/qr2Rj - врятли получиться его запустить, но может найдешь что тебе нужно

ОтветитьЦитата
Создатель темы Размещено : 19.05.2022 13:49
Aveal
(@aveal)
Top level Admin

@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

Код не проверял.

 

ОтветитьЦитата
Размещено : 19.05.2022 14:12
(@theroslyak)
Level 1

@aveal 

 Не чего не понял. Я просто пихнул этот код - не чего не изменилось

ОтветитьЦитата
Создатель темы Размещено : 19.05.2022 14:34
Aveal
(@aveal)
Top level Admin

@theroslyak Нет сейчас возможности протестить, к сожалению

ОтветитьЦитата
Размещено : 21.05.2022 10:19
Поделиться: