0

我正在使用带有QQuickWidgetQMainWindow的QML构建桌面应用程序,除了FileDialog之外,一切看起来都很好。当我使用FileDialog打开一个窗口时,它第一次工作完美,但在第二次等 FileDialog窗口呈现在主窗口后面,阻止用户选择文件,点击后可以选择文件“选择窗口”(将其向前推进)。如果应用程序处于全屏模式,则无法意识到FileDialog窗口已打开。它只是在我使用QQuickWidgetQMainWindow时发生,如果我使用QGuiApplication创建一个项目(没有QQuickWidgetQMainWindow ),我对FileDialog行为没有任何问题。一些想法如何使FileDialogQQuickWidget一起正常工作?

文件对话框代码:

/*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")
    }
}
//}

主文件

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 上运行来说明我的问题。

4

0 回答 0