2013-08-12 3 views
0

Я пытался загрузить QML файл в QGraphicsScene используя этот код:Как загрузить файл QML в QGraphicsScene в Qt5

QGraphicsScene* scene = new QGraphicsScene; 
QQmlEngine *engine = new QQmlEngine; 
QQmlComponent component(engine,"main.qml",QQmlComponent::PreferSynchronous); 
qDebug()<<component.errors(); 
QGraphicsObject *object = 
qobject_cast<QGraphicsObject *>(component.create()); 
scene->addItem(object); 

ошибки() ничего не возвращает, а выход приложение говорит:

QGraphicsScene::addItem: cannot add null item 

ответ

0

Вы не можете отнести этот QObject в объект QGraphicsObject. Экземпляр объекта из QQmlComponent не является подклассом QGraphicsObject. Вот почему ваш бросок возвращает указатель 0.

+0

Да, вы правы. Я использовал код [здесь] (http://qt-project.org/doc/qt-4.8/qml-integration.html). любое предложение ? – saeed

+0

Боюсь, что у меня его нет. Я не думаю, что вы хотите сделать, используя qtquick2 в QGraphicsScene/View. Работал с qtquick1 (ваша ссылка), но архитектура qtquick2 кажется слишком разной. Можете ли вы использовать QtQuickView? – Greenflow

+0

Мне нужны возможности масштабирования для qml-файла. – saeed

1

Вы не можете использовать QtQuick2 (новую версию QtQuick/QML Qt5) с QGraphicsScene. Вы нуждаетесь в , необходимо использовать, чтобы использовать его с QQuickView.

Если вам нужно увеличить QML-файл, чтобы он соответствовал QQuickView, просто используйте QQuickView::setResizeMode, чтобы изменить размер корневого объекта на ваш вид (QQuickView::SizeRootObjectToView).

Смежные вопросы