我正在使用 QML 使用 QQuickWidget 和 QMainWindow 构建桌面应用程序,除了 FileDialog 之外,一切看起来都很正常EM>。当我使用 FileDialog 打开一个窗口时,它第一次完美无缺,但是第二次,所以 FileDialog 窗口在主窗口后面呈现,阻止用户选择一个文件,可以在点击&#34;选择窗口&#34;之后选择一个文件。 (推动它前进)。如果应用程序处于全屏模式,则无法识别 FileDialog 窗口已打开。 当我使用 QQuickWidget 和 QMainWindow 时,如果我用 QGuiApplication 创建项目(没有 QQuickWidget 和< em> QMainWindow )我对 FileDialog 行为没有任何问题。有些想法如何使用 QQuickWidget 使 FileDialog 正常工作?
FileDialog代码:
/*uncomment ApplicationWindow and comment the rectangle component to right behavior*/
/*
ApplicationWindow{
height: 600
width: 800
*/
Rectangle {
id: rect
visible: true
Button{
id:open
height: 40
onClicked: fileDialog.open()
text: "open dialog"
}
FileDialog {
id: fileDialog
modality: Qt.ApplicationModal
title: "FileDialogTest"
nameFilters: [ "Zip Files (*.zip )", "All files (*)" ]
selectedNameFilter: "All files (*)"
selectFolder: false
onAccepted: {
console.log("Accepted")
}
onRejected: {
console.log("Rejected")
}
}
//}
Main.cpp的
int main(int argc, char *argv[])
{
/*##### This block make fileDialog work properly #####*/
/*
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QLatin1String("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
*/
/*#### This block make openDialog work have weird behavior ####*/
/* Should be commented when the previous block is uncomment */
QApplication app(argc, argv);
QMainWindow mainWindow;
QQuickWidget *quickWidget = new QQuickWidget;
quickWidget->setMinimumSize(800, 600);
quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
quickWidget->setSource(QUrl("qrc:/main.qml"));
mainWindow.setCentralWidget(quickWidget);
mainWindow.show();
return app.exec();
}
我做了一个简单的例子,我可以通过https://drive.google.com/file/d/1B_qtSZnigrLtDMHS0-84mOrFe5t2ZVIj/view?usp=sharing下载我的问题,并可以在QtCreator上运行来说明我的问题。