qt - 将参数传递给 MessageDialog 以根据用户与对话框的交互进一步处理它
问题描述
有这个 QML 消息对话框:
MessageDialog {
id: questionDialog
icon: StandardIcon.Question
standardButtons: StandardButton.Yes | StandardButton.No
title: qsTr("Question") + editorScene.emptyString
text: qsTr("Do stuff?") + editorScene.emptyString
onYes: {
console.log("I want to be able to process parameter here")
}
onNo: {
console.log("Do nothing")
}
}
在插槽内,我在处理信号onParameterChanged
时打开对话框。parameterChanged
该信号通过parameter
:
onParameterChanged: {
if (parameter) { // "parameter" is passed by parameterChanged signal
questionDialog.open() // How can I pass "parameter" to dialog when opening it?
}
}
现在我想知道如果用户选择按钮,如何parameter
从onParameterChanged
插槽传递到问题对话框以便能够处理。parameter
Yes
解决方案
通过使用Property Attributes解决了问题。
我为 定义了一个新property
属性MessageDialog
:
MessageDialog {
id: questionDialog
property string parameterName: ""
onYes: {
console.log("Parameter to be processed:", parameterName)
}
}
然后我在打开对话框之前设置属性属性:
onParameterChanged: {
if (parameter) { // "parameter" is passed by parameterChanged signal
questionDialog.parameterName = parameter // Set property attribute
questionDialog.open()
}
}
推荐阅读
- sas - SAS:如何在包含最多案例的库中找到数据集?
- python-3.x - 导入 snowboydetect 生成错误
- java - 数独:某个位置的有效值
- android - Spinner Array 需要将其项目链接到现有布局?
- css - 在scss中一周内循环运行七次
- react-native - react-native-firebase - 从无头 JS 服务打开应用程序/在后台模式下从收到的通知打开应用程序
- python - 干净地处理多个变量的 TypeErrors
- java - 在 Spring Boot 中构建动态配置路径
- javascript - 如何使用 oauth2.0 调用 youtube v3 api
- java - 警报未显示(javafx)