Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qml中的FileDialog在版本中不起作用_C++_Qt_Qtquick2_Qtquickcontrols2 - Fatal编程技术网

C++ Qml中的FileDialog在版本中不起作用

C++ Qml中的FileDialog在版本中不起作用,c++,qt,qtquick2,qtquickcontrols2,C++,Qt,Qtquick2,Qtquickcontrols2,我正在使用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: ope

我正在使用
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
    */
}
这对我有用

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

    }
}

    fdExport.open()
请尽量离开

modality: Qt.NonModal 

从您的代码中。

这里是调用FileBrowse.qml(参数中的文件)的MyJS函数。 我在其他视图中调用此函数,如下所示:

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

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()
    }
}

我不知道是哪个问题,但下面的代码在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(版本),以及qml和插件文件夹。

一个奇怪但可能的原因是防病毒:my FileDialog也没有打开,整个qml应用程序正在挂起,当AV处于活动状态时。

它不工作是什么意思?事实上,它在另一台电脑上不工作。当我在我的电脑上执行我的版本时,它工作正常,但在另一台电脑上,它不工作。文件对话框是QtQuick中的一种类型。控制1版本。您是否已经部署了相应的QML/Quick包以及您的发布二进制文件?我尝试了,但没有成功。正如我之前所说,我认为这不是代码问题,而是.dll问题,因为当我在另一台PC上部署软件时,它不工作,但在我的PC上,il工作正常。谢谢你给我你的意见有人能帮我吗?好的,这很重要。请查看您的应用程序是如何共享的。当我发布用于Windows的Qml应用程序时,我通常会将Qt framework中的完整Qml文件夹放在exe路径中。另外,我通常将所有Qt DLL放在exe路径中,因为不可能从qml源代码中知道将使用哪些DLL。最后,非常重要的是qt.conf文件。请尝试将完整的qml文件夹和所有dll添加到您的exe安装中,然后在此处回复。您好,我将我的应用程序的.exe与all.dll、Qt.conf和others.dll一起放在Qt framework(Qt/5.9/mingwXXX/bin)中,但在另一台电脑中不起作用。好,在这一点上,你应该分享或发送给我一个有行为的小项目,这样我就可以验证和解决。可能分辨率在您的眼皮底下,但有点隐藏。模式调试:当我单击浏览按钮时,消息来自输出:-->>>>>ShellStreams:AttachShellStreams:Initialized尝试加载LANGID 1036的本地化资源,主LANGID 12代码fr name French(通用)资源DLL加载在路径C:\Program Files(x86)\通用文件\Apple\Internet Services\ShellStreams.resources\fr.lproj\ShellStreamsLocalized.dllNot在资源管理器下运行。不会设置线程本地E11284 506C2510输入:ShellStreamsFolder::ShellStreamsFolder pidl=1F50E04FD020EA3A6910A2D8802B0309D140->2e80853fd6f0ec379740b3d61b4a891711800->