簡體   English   中英

通過QQuickItem打開QFileDialog

[英]Open a QFileDialog over a QQuickItem

我想通過QQuickItem打開QFileDialog。

 void
 MyCoolQQuickItem::loadFileDialog()
 {
   QString filename = QFileDialog::getOpenFileName(this, "Open a file", 
                      "C:\\path to my stuff\\", "*.*");
   if(filename.size()>0) {
     // load file and do stuff
   }
 }

MyCoolQQuickItem是QQuickItem的子類。 QFileDialog :: getOpenFileName需要一個QWidget *作為父對象。 如果我改為傳遞null_ptr,則該對話框將作為模式對話框正確打開。 但是在關閉對話框之后,錯誤的窗口將成為焦點。

我試圖通過該窗口(this-> window(),但我有一個QQuickWindow,在QWidget中也無法解析。

我可以改用QML文件對話框。 http://qt-project.org/doc/qt-5/qml-qtquick-dialogs-filedialog.html

但是我想在這里使用QFileDialog。 http://qt-project.org/doc/qt-5/qfiledialog.html

知道我該如何解決嗎?

只需使用QML版本,就可以從基於QWidget的對話框中獲得完全相同的對話框。 使用基於QWidget的對話框的唯一收獲就是將其向后移動,並為Qt5Widgets庫拖動了幾MB。

無論您認為要從中獲得什么收益,這樣做都是不值得的。 舊的QtQuick1提供了一個代理組件來顯示QML中的小部件,但是QtQuick2不能使用它,因為它具有不同的呈現方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM