C++ 从QML获取实际视图大小
这似乎是个简单的问题,但我找不到解决办法。我在QML中有一个ScrollView,它的布局策略是由锚配置的,根本没有指定固定的大小。因此,当用户调整窗口大小时,它会自动拉伸。在我的一些类中,我需要知道滚动视图大小信息,因此我从QObject继承这些类并将它们注册为QML类型,然后使用QProperty绑定到ScrollView witdh和height属性 结果是QML引擎似乎在修复ScrollView之前对其进行了多次调整。其中一些调整将宽度更改为一些负值,如-140。最后,它将其更改为正值,但该值与Design计算的尺寸不同。例如,在我的例子中,最后一次调用set height将其设置为290,但是如果我去设计并检查ScrollView大小,它的高度是310 < >从C++类中的QML中获得正确的视图大小的正确方法是什么? 主QML文件C++ 从QML获取实际视图大小,c++,qt,qml,C++,Qt,Qml,这似乎是个简单的问题,但我找不到解决办法。我在QML中有一个ScrollView,它的布局策略是由锚配置的,根本没有指定固定的大小。因此,当用户调整窗口大小时,它会自动拉伸。在我的一些类中,我需要知道滚动视图大小信息,因此我从QObject继承这些类并将它们注册为QML类型,然后使用QProperty绑定到ScrollView witdh和height属性 结果是QML引擎似乎在修复ScrollView之前对其进行了多次调整。其中一些调整将宽度更改为一些负值,如-140。最后,它将其更改为正值,
ApplicationWindow {
id : applicationWindow
visible: true
width: 640
height: 480
minimumWidth: 640
minimumHeight: 480
// skipped some unrelated opponents
StackView {
id: stackView
anchors.fill: parent
focus: true
initialItem: {
[{item : Qt.resolvedUrl("AboutPage.qml")},
{item : Qt.resolvedUrl("ConfigurationPage.qml")}]
}
}
}
ConfigurationPage.qml
Rectangle {
ScreenManager {
id: screenManager
screenModel: screenModel
managementViewW: screenArrangementScrollView.width
managementViewH: screenArrangementScrollView.height
}
ScrollView {
id: screenArrangementScrollView
frameVisible: true
anchors.left: parent.left
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.topMargin: 100
anchors.bottomMargin: 70
anchors.leftMargin: 70
anchors.horizontalCenter: parent.horizontalCenter
}
}
屏幕管理器
class ScreenManager : public QObject
{
Q_OBJECT
public:
ScreenManager();
~ScreenManager();
Q_PROPERTY(ScreenModel* screenModel READ screenModel WRITE setScreenModel)
Q_PROPERTY(int managementViewW READ managementViewW WRITE setManagementViewW)
Q_PROPERTY(int managementViewH READ managementViewH WRITE setManagementViewH)
};
20像素的差异来自菜单栏。20像素的差异来自菜单栏