Ну, я учу работать с QML, и у меня есть одно сомнение. В моем примере у меня есть ListModel с ListElements в QML, и у меня есть основной файл QML с прямоугольником, PathView и т. Д.Как вставить ListElement в QML ListModel с помощью C++?
У меня есть QWidget, а также мое главное окно. В этом QWidget я включаю QML-интерфейс как компонент. ОК!
Как я могу обработать QML ListElements с помощью C++?
Примечание: когда я говорю «обрабатывать», я хочу сказать, например, включить элемент.
Ниже приведены некоторые части моего кода ...
QML, содержащий мой ListElement, называемый "Menu1":
import QtQuick 1.0
ListModel {
id: listMovieModel
ListElement { name: "Image 1"; iconSource: "pics/image_1.jpg" }
ListElement { name: "Image 2"; iconSource: "pics/image_2.jpg" }
ListElement { name: "Image 3"; iconSource: "pics/image_3.jpg" }
ListElement { name: "Image 4"; iconSource: "pics/image_4.jpg" }
ListElement { name: "Image 5"; iconSource: "pics/image_5.jpg" }
ListElement { name: "Image 6"; iconSource: "pics/image_6.jpg" }
}
Мой главный QML:
Rectangle {
width: 500
height: 600
color: "transparent"
PathView {
id: view
focus: true
width: parent.width
height: parent.height + y
y: -150
model: Menu1 {} //First QML showed
delegate: Image {
source: iconSource
width: 64
height: 90
scale: PathView.isCurrentItem ? 3.5 * y/parent.height : 2.0 * y/parent.height
z: y
smooth: true
}
path: MyGeometricFigure { //This a another file, but is confidential
width: view.width
height: view.height
}
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightRangeMode: PathView.StrictlyEnforceRange
Keys.onLeftPressed: decrementCurrentIndex()
Keys.onRightPressed: incrementCurrentIndex()
}
}
И как я используйте QML как компонент для моего QWidget:
MainForm::MainForm(QWidget *parent) :
QWidget(parent),
ui(new Ui::MainForm)
{
ui->setupUi(this);
this->resize(1024, 576);
QDeclarativeView *myQMLTest = new QDeclarativeView(QUrl::fromLocalFile("myMainQML.qml"));
myQMLTest->setStyleSheet(QString("background: transparent; width: 600px"));
this->ui->frameListVideoGallery->layout()->addWidget(myQMLTest);
myQMLTest->setFocus();
myQMLTest->installEventFilter(this);
}
Я видел некоторые статьи об этом, но я не могу изменить свой LisModel с помощью C++. Я видел здесь http://doc.qt.nokia.com/4.7/qdeclarativemodels.html#c-data-models и здесь, в примерах с использованием PathView http://doc.qt.nokia.com/4.7/qdeclarativeexamples.html
Может кто-нибудь мне помочь?
Спасибо!
Эй @GooRoo, спасибо за Ваш ответ. Но я сделал по-другому ... На самом деле, этот пример показан здесь [ссылка] (http://cdumez.blogspot.com/2010/11/how-to-use-c-list-model-in-qml.html), я изменил его пример и изменил также «model: Menu1 {}» в моей PathView для «model: adrianoTest», поэтому в примере, который я использовал в моем main.cpp: this-> m_ImageCarousel-> rootContext() > setContextProperty ("testeAdriano", this-> m_Model); И работал! Спасибо большое ... –
Я просто попытался ответить на ваш вопрос :) Рад, что вы нашли другой способ сделать то, что хотите. – GooRoo
@AdrianoLeal, эта ссылка мертва, каким-либо образом показать, как вы обрабатывали заполнение списка из C++? – Boy