当前位置:编程学习 > wap >>

关于QFileSystemModel获取文件路径疑问

dirInfo继承QDialog类
本段程序想实现在QTableView中双击文件名字,获取文件路径的功能,但是出错了:

bool dirInfo::eventFilter(QObject *object, QEvent *event)
{
    if(event->type() == QEvent::MouseButtonDblClick)
    {
        QModelIndex currentIndex = ui->dirTableView->currentIndex();//dirTableView是QTableView类
        if(!QFileSystemModel().isDir(currentIndex))
        {
            qDebug() << QFileSystemModel().filePath(currentIndex);//出错的地方
            return true;
        }
    }
    return QObject::eventFilter(object, event);
}

代码如上,错误信息如下:ASSERT: "index.model() == q" in file dialogs/qfilesystemmodel.cpp, line 1301
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
如果改为qDebug() << QFileSystemModel().fileName(currentIndex);则没问题,但我想获取用户点击视图框架下的文件名所在的路径而不是名字,但是老是报错。求解。。。 --------------------编程问答-------------------- 判断语句搞反了吧。


if(QFileSystemModel().isDir(currentIndex))
{
  qDebug() << QFileSystemModel().filePath(currentIndex);//出错的地方
  return true;
}
--------------------编程问答--------------------
引用 1 楼  的回复:
判断语句搞反了吧。

C/C++ code

if(QFileSystemModel().isDir(currentIndex))
{
  qDebug() << QFileSystemModel().filePath(currentIndex);//出错的地方
  return true;
}


没错,我是说打开的如果是文件的话就获取该文件的路径,这个不是问题的根本,不过还是谢谢你 --------------------编程问答-------------------- 解决了,其实是因为QFileSystemModel()是一个暂时变量,不能用于传输 --------------------编程问答--------------------
引用 3 楼 fuermosilh 的回复:
解决了,其实是因为QFileSystemModel()是一个暂时变量,不能用于传输


那么该如何获得路径呢 --------------------编程问答-------------------- 建议使用信号和槽,更方便一些:
connect(treeView,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(getTreeViewSelectedFileName(QModelIndex))) ;
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,