Дэн, это способ сделать это, но: я бы сказал, что это способ "просто сделать это", не принимая во внимание, правильно это или неправильно. Кроме того, я не говорю, что ваше решение неверно, я просто пытаюсь объяснить, почему я считаю, приложения не должны быть реализованы таким образом.
Прежде всего, как я уже упоминал, Qt Quick, как следует из его названия, предназначен для быстрого создания пользовательских интерфейсов . Попытка встроить виджеты рабочего стола Qt в графическую сцену создаст дополнительное усилие (которое может быть довольно большим - в зависимости от задачи) - экспорт API в среду QML и заставить все работать. Архитектура приложения QML сильно отличается от настольной системы. Например, если вы работаете с моделью-контроллером-представлением, экспорт QTreeView и QItemDelegate в QML и обеспечение его работы может превратиться в очень сложное решение. На самом деле, если следовать этой концепции, самый простой способ - создать весь пользовательский интерфейс в бэкенде C ++ и экспортировать окончательное решение в QML, но на самом деле является настольной реализацией, которая не использует никаких преимуществ QML вообще. Если делать реализации таким способом, гораздо проще использовать API Qt Animation, который бы обеспечивал те же «плавные» эффекты, что и QML, но просто используя чисто QGraphicsView.
Во-вторых, если вы хотите использовать существующие виджеты рабочего стола в QGraphicsView, вам нужно будет встроить их в качестве «прокси-виджетов», которые, по мнению парней из Nokia, работающих с Qt Quick и QML, имеют большие проблемы с производительностью.
В-третьих, если вы хотите использовать подход QGraphicsWidget, он приведет вас к реализации всех виджетов с нуля, потому что в Qt нет виджетов на основе QGraphicsWidget. Даже для чего-то такого простого, как виджет «Кнопка», вам нужно будет написать весь код самостоятельно.
В-четвертых, , как Nokia ранее заявляла , они передали поддержку рабочего стола Qt сторонней компании, объяснив, что они сосредоточили все свои усилия на Qt Quick. Так что я бы подумал о ремонтопригодности вашего приложения. Кроме того, с появлением QML Scene Graph все QML API будут перенесены в эту реализацию, и я не уверен, будет ли по-прежнему возможно использовать с ним виджеты рабочего стола.