Qml FileDialog使用QQuickWidget(QT 5.9.1)在主窗口后面渲染

时间:2018-02-20 19:21:55

标签: qt qml qmainwindow qquickwidget

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

0 个答案:

没有答案
相关问题