【发布时间】:2015-09-26 17:25:39
【问题描述】:
我的项目需要在一个屏幕上显示两个 QML Windows(一个发送者,一个接收者)。 .qml 都要求我在其中包含一些 Cpp 模型,因此我使用 QQmlApplicationEngine 来注册 Cpp 模型。
我发现使用QWidget::createWindowContainer() 可以为单个项目显示多个Windows。这对于第一个 QML 文件非常有效。代码 sn-ps 如下所示:
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...
我决定用类似的方法为我的receive.qml 创建第二个应用程序引擎。我很快意识到即使使用container2->show(),receive.qml 也永远不会打开。现在,它显示的是一个空白页面。
我的问题是:
- 我的方法是正确的还是有更好的解决方案?
- 我需要注意什么信号才能赶上窗户关闭 事件?当其中一个时,我似乎无法检测到信号 窗口关闭。因为我想在一个已经关闭时关闭两者 检测到。
【问题讨论】:
标签: qt qml qwidget qtquick2 qquickview