我想通过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 File-Dialog代替。http://qt-project.org/doc/qt-5/qml-qtquick-dialogs-filedialog.html
但我想在这里使用QFileDialog。http://qt-project.org/doc/qt-5/qfiledialog.html
你知道我该怎么解决这个问题吗?
发布于 2014-11-24 03:25:45
只需使用QML版本,它与基于QWidget的对话框完全相同。使用基于QWidget的对话框,你唯一能得到的就是向后移动,然后为Qt5Widgets库拖出几个MB。
无论你认为你想要做的是什么,都不值得去做。旧的QtQuick1提供了一个代理组件来显示QML中的小部件,但这在QtQuick2中不可用,因为它有一种不同的呈现方法。
https://stackoverflow.com/questions/27089566
复制相似问题