Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QT QML-从C+;在现有应用程序窗口中显示Rect+;_C++_Qt_Qml - Fatal编程技术网

C++ QT QML-从C+;在现有应用程序窗口中显示Rect+;

C++ QT QML-从C+;在现有应用程序窗口中显示Rect+;,c++,qt,qml,C++,Qt,Qml,我有Qt项目(Windows、桌面)和几个QMl文件。我的main.cpp如下所示(简化): main.qml如下所示: import QtQuick 2.7 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.0 import QtQuick.Window 2.0 ApplicationWindow { id: mainWindow objectName: "mainWi

我有Qt项目(Windows、桌面)和几个QMl文件。我的main.cpp如下所示(简化):

main.qml如下所示:

    import QtQuick 2.7
    import QtQuick.Controls 2.0
    import QtQuick.Layouts 1.0
    import QtQuick.Window 2.0

    ApplicationWindow {
       id: mainWindow
       objectName: "mainWindow"
       visibility: "Maximized"
       title: "Title goes here"
    } 
我还有一些qml文件(window.qml)要显示在应用程序窗口中。它们的行为类似于窗口(可拖动、可调整大小等)

我当然可以在main.qml文件中使用

    import QtQuick 2.7
    import QtQuick.Controls 2.0
    import QtQuick.Layouts 1.0
    import QtQuick.Window 2.0

    ApplicationWindow {
       id: mainWindow
       objectName: "mainWindow"
       visibility: "Maximized"
       title: "Title goes here"
       //New:
       Window {}
    } 
但我不希望他们从一开始就在那里。我想要一个C++中的HANLLL对象(或东西),它管理WINDOW.QML文件生成的Windows列表,并用函数打开和关闭它们。这可能吗


欢呼@ < /P> < P>假设你希望每个窗口都有一个C++数据集,我的建议是实现一个<代码> QuastListMys< /Cord>派生类,它提供了这个数据,模型的每个“行”都有一个窗口的数据。

class WindowModel : public QAbstractListModel
{
    Q_OBJECT

// ....
};
向QML公开该模型的实例

WindowModel windowModel;
QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("_windowModel", &windowModel);
engine.load(QUrl(QLatin1String("qrc:/QMLFiles/main.qml")));
在qML侧,然后使用<代码>中继器<代码> > <代码>窗口<代码>作为其<代码>委托< /代码>,C++提供的模型作为其<代码>型号
Repeater {
    model: _windowModel
    delegate: Window {
        // access data provided by the model
    }
}

仔细阅读这篇文章。我读了,但我似乎找不到适合我的东西。
WindowModel windowModel;
QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("_windowModel", &windowModel);
engine.load(QUrl(QLatin1String("qrc:/QMLFiles/main.qml")));
Repeater {
    model: _windowModel
    delegate: Window {
        // access data provided by the model
    }
}