2017-01-15 6 views
0

私はいくつかのQMlファイルと共にQtプロジェクト(Windows、デスクトップ)を持っています。 main.qmlがこれですQT QML - C++から既存のApplicationWindowにRectを表示

int main(int argc, char *argv[]) { 
     QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 
     QGuiApplication app(argc, argv); 

     QQmlApplicationEngine engine; 
     engine.load(QUrl(QLatin1String("qrc:/QMLFiles/main.qml"))); 

     return app.exec(); 
    } 

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.cppには、この(簡体字)のように見えます私はアプライウィンドウに表示したい。彼らは窓のように振る舞います(ドラッグ可能、サイズ変更可能、...)。

import QtQuick 2.7 
    import QtQuick.Window 2.0 
    //Removed MouseAreas and children 
    Rectangle { 
     id: rect 
     objectName: "rect" 
     width: 400 
     height: 400 
     x: 100 
     y: 100 
     border.width: 2 
     border.color: "black" 
    } 

私はもちろん

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 {} 
    } 

main.qmlファイルにそれらを呼び出すことができます。しかし、私は彼らが最初からそこにしたくありません。私は、window.qmlファイルによって生成されたWindowsのリストを管理するC++のHandlerObject(または何か)を必要とし、それらを開いたり閉じたりすることができます。これは可能ですか?あなたはウィンドウごとに設定C++のデータを持つようにしたいと仮定し

乾杯

+0

[こちら](http://doc.qt.io/qt-5/qtqml-cppintegration-topic.html)の記事をよく読んでください。 – folibis

+0

私はしましたが、私にとってはうまくいくものを見つけることができません。 – user2037559

答えて

0

、私の提案は、1画面分のデータを持つモデルの各「行」を、このデータを提供しQAbstractListModel派生クラスを実装することであろう。あなたがdelegateそのmodelとしてモデル設けC++のようWindowRepeaterを使用QML側

WindowModel windowModel; 
QQmlApplicationEngine engine; 
engine.rootContext()->setContextProperty("_windowModel", &windowModel); 
engine.load(QUrl(QLatin1String("qrc:/QMLFiles/main.qml"))); 

をQMLするために、そのモデルのインスタンスを公開

class WindowModel : public QAbstractListModel 
{ 
    Q_OBJECT 

// .... 
}; 

Repeater { 
    model: _windowModel 
    delegate: Window { 
     // access data provided by the model 
    } 
} 
関連する問題