我是QT的新手。我正在尝试创建一个简单的文件系统浏览器。我为模型和视图类创建了一个单独的类。他们在这里:
// modelClass.h
#ifndef MODELCLASS_H
#define MODELCLASS_H
#include <QFileSystemModel>
class modelClass: public QFileSystemModel{
Q_OBJECT
public:
modelClass(); //constructor
QFileSystemModel* createModel(); //creates the QFileSystemModel
//public slots:
private:
};
#endif // MODELCLASS_H
// modelClass.cpp
#include "modelClass.h"
modelClass::modelClass(){
createModel(); //calls to function below
}
QFileSystemModel* modelClass::createModel(){
QFileSystemModel* model = new QFileSystemModel;
model->setRootPath("/");
return model;
}
// systemBrowser.cpp
#include "modelClass.h"
#include <QtGui>
int main(int argc, char *argv[]){
QApplication app(argc, argv);
modelClass model();
QTreeView tree;
tree.setModel(&model);
tree.setSortingEnabled(true);
tree.header()->setResizeMode(QHeaderView::ResizeToContents);
tree.resize(640, 480);
tree.show();
return app.exec();
}
尝试编译时,我收到错误:
no matching function for call to 'QTreeView::setModel(modelClass(*)())'
candidates are: virtual void QTreeView::setModel(QAbstractItemModel*)*
有人可以帮我解决这个错误吗?我确信它只是一些我想念的简单事物。谢谢
答案 0 :(得分:1)
我知道,可能会复活一具尸体。但是,这很容易:
该行
modelClass model();
错了。您的编译器假定这是函数 model()的前向声明,返回类型 modelClass 。因此调用 QTreeView :: setModel
时出错该行应写为:
modelClass model;