Описание: Цель состоит в том, чтобы показать настраиваемое диалоговое окно (без границ, без кнопок по умолчанию, содержимое должно предоставляться QML), желательна прозрачность и диалоговое окно со встроенным QML должно показать во весь экран. Содержимое QML, отображаемое в диалоговом окне, должно правильно масштабироваться до полноэкранного режима.
Реализация (конструктор) настраиваемого диалогового окна:
CIdentityBox::CIdentityBox(QWidget *parent): QDialog(parent)
{
setAttribute(Qt::WA_TranslucentBackground);
QQuickWidget* content = new QQuickWidget();
content->setParent(this);
content->rootContext()->setContextProperty(QStringLiteral("applicationData"), this);
content->setResizeMode(QQuickWidget::SizeRootObjectToView);
content->setSource(QStringLiteral("qrc:/dialog.qml"));
content->setClearColor(Qt::transparent);
}
QML-файл:
Item {
//objectName: "topographySeries"
height: 750
width:360
//other stuff
}
Я показываю диалог с вызовом dialog-> showFullScreen ();
Текущее состояние: Теперь, в диалоговом окне показано, что пространство, занимаемое QDialog, действительно полноэкранное (если я отключу WA_TranslucentBackground, весь экран станет белым), НО внутренний (?) QQuickWidget не масштабируется вообще. Несмотря на то, что SizeRootObjectToView установлен.
Идеи? В QML, если я изменяю высоту / ширину по умолчанию (?) Или устанавливаю anchors.fill = parent, QQuickWidget вообще не отображается. Идеи?
Есть какой-нибудь хакерский способ выполнить sh это? Не обязательно быть чистым, я уже потратил на это слишком много времени.
Вопрос: как сделать так, чтобы внутренний QQuickWidget занимал все пространство QDialog. Другие подходы приветствуются.