FileDialog в Qml не работает в Release

114
9

Я работаю над проектом с Qt Quick Control 2. Когда я пытаюсь запустить свое программное обеспечение в режиме отладки, FileDialog.qml открывается отлично, но когда я развертываю его как режим выпуска, он не работает.

Вот мой код:

import QtQuick 2.4 
import QtQuick.Window 2.2
import QtQuick.Controls 1.3
import QtQuick.Dialogs 1.0

// File Dialog to browse
FileDialog {
id: openDialog
title: "Please Select An Image"
folder: shortcuts.pictures
nameFilters: ["Image files (*.BMP)"]
modality: Qt.NonModal
selectExisting: true

/*
* do my stuff
*/
}

спросил(а) 2021-01-19T17:56:42+03:00 2 месяца, 3 недели назад
1
Решение
105

Я не знаю, в чем проблема, но приведенный ниже код совершенно портативен на машинах Windows. Протестировано и в Linux.

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.0

Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")

FileDialog {
id: fdImport
title: qsTr("File name")
folder: shortcuts.home
onAccepted: {
textEdit.text= fdImport.fileUrls[0]
}
}

Rectangle {
id: rectangle
color: "#ffffff"
anchors.fill: parent

Rectangle {
id: rectangle1
color: "#ffffff"
anchors.right: parent.right
anchors.rightMargin: 8
anchors.left: parent.left
anchors.leftMargin: 8
anchors.bottom: rectangle2.top
anchors.bottomMargin: 6
anchors.top: parent.top
anchors.topMargin: 8

TextEdit {
id: textEdit
text: qsTr("Text Edit")
anchors.fill: parent
font.pixelSize: 12
}
}

Rectangle {
id: rectangle2
y: 441
width: 128
height: 32
color: "#ffffff"
anchors.left: parent.left
anchors.leftMargin: 8
anchors.bottom: parent.bottom
anchors.bottomMargin: 7

MouseArea {
id: mouseArea
anchors.fill: parent
onClicked: {
fdImport.open()
}

Text {
id: text1
text: qsTr("Click me!")
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
anchors.fill: parent
font.pixelSize: 12
}
}
}
}
}

Файл qt.conf

[Paths]
Plugins=plugins
Libraries=libs

Не забудьте скопировать всю dll (release) в исполняемую папку с папками qml и plugins.

ответил(а) 2021-01-19T17:56:42+03:00 2 месяца, 3 недели назад
44

Это работает для меня

FileDialog {
id: fdExport
title: qsTr("File name")
folder: shortcuts.home
selectFolder: true
onAccepted: {

}
}

и запустить

    fdExport.open()

Пожалуйста, постарайтесь уйти

modality: Qt.NonModal 

от вашего кода.

ответил(а) 2021-01-19T17:56:42+03:00 2 месяца, 3 недели назад
44

Здесь моя функция Js вызывает FileBrowse.qml (файл в параметрах). Я вызываю эту функцию в другом виде следующим образом:

JsCommonCall.openFileDialog("frameFileBrowse.qml",2)

function openFileDialog(file,
parentCalled) {
_component = Qt.createComponent(file);
_popUp = _component.createObject(windowsMain, {"x": offsetPopUpCreate,
"y": offsetPopUpCreate,
"parentCall":parentCalled});
if(_popUp !== null)
_popUp.open()
}


здесь это мой FileBrowse

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Dialogs 1.0

// File Dialog to browse
FileDialog {
id: openDialog
title: "Please Select An Image"
folder: shortcuts.home
nameFilters: ["Image files (*.BMP)"]
selectFolder: true
// variables
property int parentCall;

onAccepted: {
imgCurrentCam1.source = openDialog.fileUrl;
openDialog.close()
}

onRejected: {
openDialog.close()
}
}

ответил(а) 2021-01-19T17:56:42+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема