我愿意使用QML中的FileDialog,但事实证明它不适用于SaveAs情况(因为不能指定不存在的文件名),而且对话的感觉并不真实,移动。QML中的自定义FileDialog
作为一种变通方法我已决定建立一个简单的MyFileDialog,看起来像这样:
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Controls.Styles 1.4
import QtQuick.Controls.Material 2.0
import QtQuick.Layouts 1.3
Popup
{
implicitWidth: window.width/3 * 2
implicitHeight: window.height/3 * 2
x: (window.width - width)/2
y: 20
modal: true
focus: true
property alias title: popupLabel.text
contentItem: ColumnLayout
{
id: settingsColumn
spacing: 20
// Popup title.
Label
{
id: popupLabel
font.bold: true
anchors.horizontalCenter: parent.horizontalCenter
}
// File path.
TextField
{
id: field
placeholderText: "File path..."
implicitWidth: parent.width
}
// Buttons.
RowLayout
{
spacing: 10
Button
{
id: okButton
text: "Ok"
onClicked: { onOkClicked(); close();}
Material.foreground: Material.primary
Material.background: "transparent"
Material.elevation: 0
Layout.preferredWidth: 0
Layout.fillWidth: true
}
Button
{
id: cancelButton
text: "Cancel"
onClicked: { state = false; }
Material.background: "transparent"
Material.elevation: 0
Layout.preferredWidth: 0
Layout.fillWidth: true
}
}
}
}
现在我想这个对话框是可重复使用的几种情况,如打开文件,导入文件,保存文件...但是这意味着okButton.onClicked的行为因这些情况而异。
我已经尝试了几种方法来指定一个自定义(或说可更改)的行为okButton.onClicked但迄今没有很好的运气。这是我曾尝试:
- 使属性别名在弹出okButton.onClicked
- 定义okButton.onClicked,我使用弹出
- 定义弹出外的行为功能和将其提供给Popup
这些尝试都不起作用,而且我总是有编译错误。
任何想法,我可以使我的代码可重用?
此外,我可以在互联网上找到最近和干净的例子,任何想法,我可以找到的地方?
谢谢,
安托万。
哪'FileDialog'你在说什么? [这个可以另存为。](http://doc.qt.io/qt-5/qml-qtquick-dialogs-filedialog.html#selectExisting-prop) – Mitch
@Mitch,你真的救了我几个小时,谢谢! – arennuit