2013-04-24 75 views
9

我无法使用Qt 4.8更改QFileDialog的当前目录。在Windows和Mac OS 10.6 Snow Leopard上,相同的代码工作正常。如果我不使用本机Mac OS X对话框,它也可以正常工作。QFileDialog :: getOpenFileName未在Mac OS 10.8上设置初始目录Mountain Lion

这工作:

fn=QFileDialog::getOpenFileName(this,"Select File","/Users/myuser/Desktop",QString(),0,QFileDialog::DontUseNativeDialog); 

这不起作用:

fn=QFileDialog::getOpenFileName(this,"Select File","/Users/myuser/Desktop"); 

看来,如果大部分时间它打开来getOpenFileName最后一次通话的最后一个路径等。

回答

5

这是Qt中的一个bug,据报道在Qt 5.0.1和Qt 4.8.4中已修复(虽然它似乎仍然可以在4.8.4中由人们(包括我自己)重现)。

这个错误已经在JIRA中报告为QTBUG-20771,QTBUG-28161最后QTBUG-35779(它似乎最终完全解决了Qt 5.2.1中的问题)。这里是Gerrit的补丁链接。

+0

谢谢!我已经搜索了Qt错误跟踪器,但没有找到那些2. – 2013-04-25 14:30:17

+0

仍然有同样的错误在这里..在QT 5.8 – vivi 2018-01-01 22:39:35

7

在小牛队的Qt5.2.0上遇到了同样的问题... 我找到了一个解决方法:将一个虚拟文件名添加到您要选择的目录。 但是,请务必不要在Windows上执行此操作,因为用户会看到它。

QString dir = "/Users/myuser/Desktop"; 
#if defined(__APPLE__) 
dir += "/MyFile.txt"; 
#endif 
fn = QFileDialog::getOpenFileName(this, "Select File", dir); 

此外,对于那些像我这样实例化一个文件对话框,因为他们需要更多的选项,你也可以这样做:

QFileDialog fileDialog(this, "Select File"); 
#if defined(__APPLE__) 
fileDialog.selectFile(dir + "/MyFile.txt"); 
#else 
fileDialog.setDirectory(dir); 
#endif 
... 
+0

同样仍然错误在这里..在QT 5.8 – vivi 2018-01-01 22:39:23

相关问题