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->