Image qml flickable画布加载内容不';无法调整大小,无法轻弹
我有一个Image qml flickable画布加载内容不';无法调整大小,无法轻弹,image,qt,qml,flickable,Image,Qt,Qml,Flickable,我有一个Flickable和一个子Canvas和Image。我正在点击按钮将图像加载到图像的源。这一切都有效。 问题是flickable没有将其尺寸刷新到图像的尺寸,因此整个图像是“flickable”的,我可以在它周围滚动(它比可视窗口大)。但是,如果我调整窗口大小,然后可以在图像周围轻弹,它会刷新 我猜这是因为窗口正在重新绘制,qml正在重新读取img.width和img.height值以重新绘制Flickable (仅供参考如果我在启动应用程序时加载图像,Flickable将按预期工作,只
Flickable
和一个子Canvas
和Image
。我正在点击按钮将图像加载到图像的源。这一切都有效。
问题是flickable没有将其尺寸刷新到图像的尺寸,因此整个图像是“flickable”的,我可以在它周围滚动(它比可视窗口大)。但是,如果我调整窗口大小,然后可以在图像周围轻弹,它会刷新
我猜这是因为窗口正在重新绘制,qml正在重新读取img.width
和img.height
值以重新绘制Flickable
(仅供参考如果我在启动应用程序时加载图像,Flickable将按预期工作,只有当我在点击按钮时加载图像,应用程序运行后,窗口需要重新绘制(或调整大小),以使Flickable
按预期工作
Flickable {
id: flickableCanvas
anchors.fill: parent
Item {
id: source
width: Math.max(parent.width,img.width)
height: Math.max(parent.height,img.height)
Image
{
id: img
}
Canvas {
id: myCanvas
}
}
}
Connections {
target: QmlBridge
onLoadImage: {
img.source = p
myCanvas.requestPaint()
flickableCanvas.contentWidth = img.width
flickableCanvas.contentHeight = img.height
}
}
看起来您正试图在加载图像之前访问图像的宽度
/高度
您应该将FlickablecontentWidth
/contentHeight
分配移动到Image
组件下:
Image {
id: im
onStatusChanged: {
if (status === Image.Ready) {
flickableCanvas.contentWidth = img.width
flickableCanvas.contentHeight = img.height
}
}
}
// ...
Connections {
target: QmlBridge
onLoadImage: {
img.source = p
myCanvas.requestPaint()
// flickableCanvas.contentWidth = img.width
// flickableCanvas.contentHeight = img.height
}
}
但我认为您甚至不必手动设置这些属性。只需将它们绑定到img
width/height:
Flickable {
id: flickableCanvas
anchors.fill: parent
contentWidth: img.width // no need for future assignment
contentHeight: img.height
// ...
}