我正在使用QML开发一个应用程序,并且是QML的初学者。
我想点击“Press me”按钮,然后打开一个文件对话框并选择一个文件夹。然后单击“确定”后,列表视图将在UI上列出该文件夹中的所有图像。然而,我的程序在启动时立即显示文件对话框,而没有点击任何按钮。此外,“Press me”按钮在单击时没有反应。列表视图甚至没有显示出来。有人能指出我的错误吗?
我想点击“Press me”按钮,然后打开一个文件对话框并选择一个文件夹。然后单击“确定”后,列表视图将在UI上列出该文件夹中的所有图像。然而,我的程序在启动时立即显示文件对话框,而没有点击任何按钮。此外,“Press me”按钮在单击时没有反应。列表视图甚至没有显示出来。有人能指出我的错误吗?
main.qml
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import QtQuick.Window 2.1
import QtQuick.Controls.Styles 1.2
import QtQuick.Dialogs 1.1
import Qt.labs.folderlistmodel 2.1
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
SwipeView {
id: swipeView
anchors.fill: parent
currentIndex: tabBar.currentIndex
Page1 {
}
Page {
Label {
text: qsTr("Second page")
anchors.centerIn: parent
}
}
}
footer: TabBar {
id: tabBar
currentIndex: swipeView.currentIndex
TabButton {
text: qsTr("First")
}
TabButton {
text: qsTr("Second")
}
}
}
Page1.qml
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import QtQuick.Window 2.1
import QtQuick.Controls.Styles 1.2
import QtQuick.Dialogs 1.1
import Qt.labs.folderlistmodel 2.1
Page1Form {
FolderListModel
{
id: folderModel
showDirs: true
showDirsFirst: true
folder: fileDialog.fileUrl
nameFilters: ["Image Files (*.jpg *.png *.gif)"];
//nameFilters: ["*.jpg"]
}
Component {
id: fileDelegate
Text { text: fileName }
}
ListView {
anchors.fill: parent
model: folderModel
delegate: fileDelegate
}
FileDialog{
id: fileDialog;
title: "Please choose a file";
nameFilters: ["Image Files (*.jpg *.png *.gif)"];
selectFolder:true
visible: true
onAccepted: {
console.log("User has selected " + dialogFile.folder);
fileDialog.close()
}
}
button1.onClicked: {
fileDialog.open();
console.log("Button Pressed. Entered text: " + textField1.text);
}
}
Page1Form.ui.qml
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
Item {
property alias textField1: textField1
property alias button1: button1
RowLayout {
anchors.horizontalCenter: parent.horizontalCenter
anchors.topMargin: 20
anchors.top: parent.top
TextField {
id: textField1
placeholderText: qsTr("Text Field")
}
Button {
id: button1
text: qsTr("Press Me")
}
}
}