У меня есть требование для моего проекта отображать два QML Window
с каждого на одном из экрана (один отправитель, один приемник). Оба из .qml
требуют от меня включить некоторые Cpp-модели внутри, я использую QQmlApplicationEngine
для регистрации моделей Cpp.Несколько окон в одном проекте
Я узнал, что используя QWidget::createWindowContainer()
Я могу отображать несколько Window
s для одного проекта. Это отлично работает для первого файла QML. Фрагменты кода выглядит следующим образом:
QQmlApplicationEngine* engine = new QQmlApplicationEngine(Qurl("main.qml"));
QmlContext* context = engine.getContextProperty();
//do some Cpp models registering...
QQuickview *view = new QQuickview(engine,0);
QWidget* container = widget::createWindowContainer(view);
//I realized I dont need to do container->show(); for the main.qml to appear..
//use desktop widget to move the 2nd container to the 2nd screen...
я решил создать 2-й двигатель приложения для моего receive.qml
с подобным методом. Вскоре я понял, что receive.qml
никогда не откроется даже с container2->show()
. Теперь он показывает пустую страницу.
Мои вопросы:
- Является ли мой подход правильный или есть лучшее решение для этого?
- Какой сигнал мне нужно, чтобы поймать окно закрыть событие? Кажется, я не могу обнаружить сигнал, когда один из окон закрыт. так как я хотел закрыть их, когда был обнаружен .
приятно! решение работает как шарм. кажется, что мы можем только 1 двигатель в любое время. Что касается сдвига второго окна на 2-й экран, Я получил доступную геометрию из qApplication :: desktop и установил x(), y() окна2 с помощью wnd2- > setX (..) & wnd2-> setY (..), чтобы получить нужную позицию. Можно ли установить x, y непосредственно через QQuickWindow? Или мне нужно использовать QObject :: setProperty? – angelhalo
Обновление: от http://doc.qt.io/qt-5/qtqml-cppintegration-interactqmlfromcpp.html кажется, что для установки X и Y рекомендуется использовать setProperty. Я приму этот метод. – angelhalo
Вы можете использовать элемент [Screen] (http://doc.qt.io/qt-5/qml-qtquick-window-screen.html), чтобы настроить размер и положение в QML – folibis