我創建了一個嵌套矩形塊,即 QML 中主矩形塊內的??一個矩形。現在我必須在某些操作上隱藏內部矩形塊,一旦操作完成,讓它再次可見。我正在嘗試以下操作:
Rectangle {
id: window
width: 450
height: 550
property bool isTopToolBarAreaVisible : true
Rectangle {
id: toolBarArea
width: 1
height: parent.height
color: drawOptionsDlg.toolBarColor
visible : isTopToolBarAreaVisible
ToolButton {
contentItem: Text {
text: "Save as"
}
onClicked: {
...
isTopToolBarAreaVisible = false // hide the inner rectangule
window.grabToImage(function(result) {
result.saveToFile(fileName);
}, Qt.size(window.width*2,window.height*2));
isTopToolBarAreaVisible = true // show the inner rectangle again
}
}
}
}
我創建了一個布爾 isTopToolBarArea 來控制可見性,但它不起作用。任何人都可以幫忙。
uj5u.com熱心網友回復:
這似乎有效。我隱藏了Rectangle包含觸發時間的ToolButton內容onClicked,并在分配給的回呼中再次顯示它grabToImage(callback, targetSize)。添加RowLayout只是為了ToolButton使Rectangle.
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
Rectangle {
id: window
anchors.fill: parent
color: "green"
Rectangle {
id: toolBarArea
width: parent.width
height: 40
color: "red"
RowLayout {
anchors.fill: parent
ToolButton {
contentItem: Text { text: "Save as" }
onClicked: {
toolBarArea.visible = false
window.grabToImage(function(result) {
result.saveToFile("test.png")
toolBarArea.visible = true
}, Qt.size(window.width * 2, window.height * 2))
}
}
}
}
}
}
uj5u.com熱心網友回復:
如果您只是在 onClicked 處理程式中呼叫您的 delayGrab() 函式,那仍然無法正常作業。您正在延遲作業,但不允許 UI 執行緒在等待時繼續運行。如果你的函式需要很長時間,作業執行緒會更好。但是對于相當短的任務,計時器會起作用。計時器應如下所示:
Rectangle {
...
Rectangle {
...
ToolButton {
onClicked: {
isTopToolBarAreaVisible = false // hide the inner rectangle
myTimer.start();
}
}
Timer {
id: myTimer
interval: 10 // Adjust this as needed
onTriggered: {
window.grabToImage(function(result) {
result.saveToFile(fileName);
}, Qt.size(window.width*2,window.height*2));
isTopToolBarAreaVisible = true // show the inner rectangle again
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/489348.html
