C++ QT QML-从C+;在现有应用程序窗口中显示Rect+;
我有Qt项目(Windows、桌面)和几个QMl文件。我的main.cpp如下所示(简化): main.qml如下所示: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
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 } }