Qt QML中的自定义文件对话框
我愿意使用QML中的FileDialog,但它在SaveAs情况下不可用,因为您无法指定不存在的文件名,而且对话框的感觉不是真正的现代感或移动性 作为一种解决方法,我决定构建一个简单的MyFileDialog,如下所示:Qt QML中的自定义文件对话框,qt,qml,qtquick2,qt-quick,Qt,Qml,Qtquick2,Qt Quick,我愿意使用QML中的FileDialog,但它在SaveAs情况下不可用,因为您无法指定不存在的文件名,而且对话框的感觉不是真正的现代感或移动性 作为一种解决方法,我决定构建一个简单的MyFileDialog,如下所示: import QtQuick 2.7 import QtQuick.Controls 2.0 import QtQuick.Controls.Styles 1.4 import QtQuick.Controls.Material 2.0 import QtQuick.Layou
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
定义okButton.onclick在我使用弹出窗口的位置
在弹出窗口外定义一个行为函数,并将其提供给弹出窗口
这些尝试都不起作用,我总是有编译错误
你知道我能做些什么使我的代码可重用吗
而且我在网上也找不到最近的干净的例子,你知道我在哪里可以找到吗
谢谢
Antoine。来自QtQuick.Dialogs导入的文件对话框有一个属性,可用于另存为:
是否只能选择现有文件或目录
默认情况下,此属性为true。在打开对话框之前,必须将此属性设置为所需的值。将此属性设置为false意味着该对话框用于命名要保存内容的文件,或命名要创建的文件夹;因此,selectMultiple必须为false
如果你想要一个现代的移动界面,你最好自己制作。不过,我不会使用对话框,因为它更以桌面为中心。例如,Dropbox在其移动UI中使用类似ListView的内容:
QtQuick.Dialogs导入中的FileDialog有一个属性,可用于另存为:
是否只能选择现有文件或目录
默认情况下,此属性为true。在打开对话框之前,必须将此属性设置为所需的值。将此属性设置为false意味着该对话框用于命名要保存内容的文件,或命名要创建的文件夹;因此,selectMultiple必须为false
如果你想要一个现代的移动界面,你最好自己制作。不过,我不会使用对话框,因为它更以桌面为中心。例如,Dropbox在其移动UI中使用类似ListView的内容:
你在说哪个文件对话框@米奇,你真的帮我省了几个小时,谢谢!你在说哪个文件对话框@米奇,你真的帮我省了几个小时,谢谢!哈哈!这正是我所期待的建议!我将使用原型版本的对话框,但一旦我们达到测试版,我们将过渡到您的Listview,Dropbox样的主张。谢谢哈哈!这正是我所期待的建议!我将使用原型版本的对话框,但一旦我们达到测试版,我们将过渡到您的Listview,Dropbox样的主张。谢谢