Qml中的FileDialog无法在Release中运行

时间:2018-03-08 17:00:32

标签: c++ qt qtquick2 qtquickcontrols2

我正在使用UseExistingCache开展项目。 当我尝试在调试模式下运行我的软件时,FileDialog.qml会完美打开,但当我将其部署为发布模式时,它无法正常工作。

这是我的代码:

Qt Quick Control 2

4 个答案:

答案 0 :(得分:0)

这对我有用

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

    }
}

并运行

    fdExport.open()

请尝试离开

modality: Qt.NonModal 

来自你的代码。

答案 1 :(得分:0)

这是我的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()
    }
}

答案 2 :(得分:0)

我不知道哪个是问题,但下面的代码在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

请记得使用qml和plugins文件夹复制可执行文件夹中的所有dll(发行版)。

答案 3 :(得分:0)

一个奇怪但可能的原因是防病毒:我的FileDialog也没有打开,并且当AV处于活动状态时,整个QML应用程序都挂起了。