当前位置: 代码迷 >> QT开发 >> QFileDialog的在windows下的有关问题
  详细解决方案

QFileDialog的在windows下的有关问题

热度:130   发布时间:2016-04-25 03:10:05.0
QFileDialog的在windows下的问题
本帖最后由 zwb2214990526 于 2014-10-14 09:30:05 编辑
QString path = QFileDialog::getOpenFileName(this,tr("文件列表"),
                                    "E:/pro",tr("Text Files(*.pit)"));*/

这段代码,在windows下运行时,打开对话框后进入我的电脑,再点击选择的硬盘(例如本地磁盘:(E))就会弹错:
操作系统是win7.

ASSERT: "ret.at(0).isLetter()" in file io/qfilesystemengine_win.cpp, line 565
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.

进入其他的文件夹没有这个问题。如果代码换成
 QStringList paths = QFileDialog::getOpenFileNames(this,tr("文件列表"),
                  "E:/pro",tr("Text Files(*.pit)"));
也没有问题。

求高人解惑。。。。。

另外,如果我想在打开的对话框中增加删除文件的选项,有什么好的办法,因为程序需要用触屏操作,所有鼠标右击文件
行不通,是不是只能再创一个文件对话框实现文件的删除。
------解决思路----------------------
/p写成//p试试
------解决思路----------------------
应该不是这段问题,是这段后面的代码问题?
------解决思路----------------------
引用:
补充下,刚重新创建了个工程,在pushbutton中加入这行代码,测试没有问题

为什么在另一个工程中,任意的pushbutton中加入就会出现这个错误

ASSERT: "ret.at(0).isLetter()" in file io/qfilesystemengine_win.cpp, line 565
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.

究竟原因是什么


这样的话,只能靠你慢慢调了,或者你试着一点点减少代码,看看是什么导致的。
------解决思路----------------------
ASSERT: "ret.at(0).isLetter()" in file io/qfilesystemengine_win.cpp, line 565
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
--------------------------------------------------------------------
进入其他的文件夹没有这个问题。如果代码换成
 QStringList paths = QFileDialog::getOpenFileNames(this,tr("文件列表"),
                  "E:/pro",tr("Text Files(*.pit)"));
也没有问题。
--------------------------------------------------------------------------------------

从错误提示,和你没有问题的语句来看,函数返回的应该是个串的列表,把列表赋给串是有问题的。
  相关解决方案