Как встроить QGrapicsView в окно QtQuick?

#qt #qt5 #qgraphicsview #qquickitem

Вопрос:

У меня была игра, написанная QGrapicsView/QGraphicsScene. Теперь я хочу встроить его в приложение QtQuick, написанное QQuickWindow/QQuickItem. Как я могу это сделать?

Оригинальный Код Игры:

 TileScene *scene = new TileScene(":/tileset.png", ":/test.tmx");   NPC *joe = new NPC(":/nerd.png");  scene-gt;addCharacter(joe);  joe-gt;setPos(15 * TILE_WIDTH, 23 * TILE_HEIGHT);   // Set up a view of our scene  view = new CharacterView(scene);  view.show();  

Приложение QtQuick:

 MainContent::MainContent( QQuickItem* parent ) {  auto gridBox = new MainContentGridBox();   gridBox-gt;addItem( new GameItem("Deck 01"), 0, 0);  ... }  //GameItem.h  class GameItem : public QQuickItem {  Q_OBJECT public:  GameItem(QString text, QQuickItem* parent = nullptr); }  //GameItem.cpp  GameItem::GameItem(QString text, QQuickItem* parent) {  TileScene *scene = new TileScene(":/tileset.png", ":/test.tmx");   NPC *joe = new NPC(":/nerd.png");  scene-gt;addCharacter(joe);  joe-gt;setPos(15 * TILE_WIDTH, 23 * TILE_HEIGHT);   // Set up a view of our scene  view = new CharacterView(scene); }  

Комментарии:

1. это ненормально-отправлять виджет в элемент qml, но для ранней работы вы можете запустить QWidget::Grab для доступа к отображаемому изображению QGraphicsView и показать в QtQuick, но в этом решении взаимодействие с мышью будет игнорироваться.