[英]Multiple windows in a single project
我要求我的項目在一個屏幕上顯示兩個QML Window
(一個發送者,一個接收者)。 兩個.qml
要求我在里面包含一些Cpp模型,因此我使用QQmlApplicationEngine
來注冊Cpp模型。
我發現使用QWidget::createWindowContainer()
我可以為一個項目顯示多個Window
。 這適用於第一個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...
我決定使用類似的方法為我的receive.qml
創建第二個應用程序引擎。 我很快意識到即使使用container2->show()
, receive.qml
也永遠不會打開。 現在,它顯示一個空頁面。
我的問題是:
這可以更容易,例如:
main.qml
import QtQuick 2.3
import QtQuick.Window 2.2
Item {
Window {
objectName: "wnd1"
visible: true
}
Window {
objectName: "wnd2"
visible: true
}
}
所以你可以從C ++代碼訪問這些窗口:
main.cpp中
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
QQuickWindow *wnd1 = engine.rootObjects()[0]->findChild<QQuickWindow *>("wnd1");
if(wnd1)
wnd1->setTitle("Server");
QQuickWindow *wnd2 = engine.rootObjects()[0]->findChild<QQuickWindow *>("wnd2");
if(wnd2)
wnd2->setTitle("Client");
要捕獲結束事件,您應該使用QQuickWindow :: closing事件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.