У меня есть QQuickWidget. Я хотел бы сделать его автозависимым в соответствии с его содержимым QML и предоставить как горизонтальные, так и вертикальные полосы прокрутки в случае, если его содержимое не может соответствовать окну.Использование QScrollArea с QQuickWidget
Я положил QQuickWidget внутри QScrollArea и добавил макет к QScrollArea, чтобы сделать QQuickWidget, чтобы заполнить его. В родительском окне конструктора я добавил строку:
scroll_area->setWidget(quick_widget);
Однако полосы прокрутки не доступны, независимо от размера QML контента. Как настроить QQuickWidget и QScrollArea на работу так, как мне нужно?
UPDATE1: Ну, я пытаюсь сделать это через QDesigner. Фактический XML пользовательского интерфейса:
<widget class="QScrollArea" name="scroll_area">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QQuickWidget" name="quick_widget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>502</width>
<height>269</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="resizeMode">
<enum>QQuickWidget::SizeViewToRootObject</enum>
</property>
<property name="source">
<url>
<string>…</string>
</url>
</property>
</widget>
</widget>
И во время отладки я могу видеть, что QScrollArea.widget() был уже установлен в quick_widget (без scroll_area.setWidget силы вызова()), но все еще есть не скроллбары доступны, даже когда содержимое quick_widget не может соответствовать его размеру.
UPDATE2: Возможно, проблема связана с тем, что элементы добавляются динамически. И, возможно, высота и ширина корневой объект должен быть изменен вручную (или они не должны?) Например:
if (object.x + object.width > root.width)
root.width = object.x + object.width;
if (object.y + object.height > root.height)
root.height = object.y + object.height;