我已经实现了显示指定目录下的所有文件和文件夹,我还想实现一个功能:双击某个文件夹,打开它并显示该文件夹中的内容。双击某个文件,用文件编译器打开该文件。所以我自己写了个类,让它继承QMainWindow(为了加工具按钮的方便),给它写一个槽函数open,让它连接到QListView类的doubleClicked信号上。但现在居然connect失败了,它提示:No such slot QMainWindow::open(QModelIndex) ??这个什么意思呀,我定义了这个槽呀!大家帮我看看,这是什么原因呀?我的程序有什么问题吗?
#include <QtGui>
#include <QApplication>
class Imagewindow :public QMainWindow
{
public:
Imagewindow() ;
public slots:
void open(const QModelIndex &index ) ;
private:
QDirModel *model ;
QListView *list ;
QDir imageDir ;
QStringList fileList ;
};
Imagewindow::Imagewindow()
{
model = new QDirModel ;
list = new QListView(this) ;
bool yes_no ;
list->setViewMode(QListView::IconMode);
list->setModel(model);
list->setRootIndex(model->index("/mnt/hgfs/share_file/qt_dir",0));
setCentralWidget(list);
yes_no = connect(list,SIGNAL(doubleClicked(const QModelIndex &) ),this,SLOT(open(const QModelIndex &))) ;
qDebug("connect? %d",yes_no); //这个值居然是0
}
void Imagewindow::open(const QModelIndex &index)
{
qDebug("enter open()!");
if(model->isDir(index)) //如果双击的是目录的话
{
list->setRootIndex(index); //显示该目录
setCentralWidget(list);
}
else
{
list->openPersistentEditor(index); //用编辑器编辑该文件
}
}