gpt4 book ai didi

c++ - 在 QQuickItem 上打开 QFileDialog

转载 作者:行者123 更新时间:2023-11-28 06:33:49 32 4
gpt4 key购买 nike

我想在 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 中不可用,因为它具有不同的渲染方法。

关于c++ - 在 QQuickItem 上打开 QFileDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27089566/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com