没有匹配函数调用QTreeView :: setModel(modelClass(*)())'
问题描述:
我是QT的新手。我正在尝试创建一个简单的文件系统浏览器。我为模型和视图类创建了一个单独的类。在这里,他们是:没有匹配函数调用QTreeView :: setModel(modelClass(*)())'
//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*)*
任何人都可以请帮我解决这个错误吗?我相信它只是简单的我错过了。谢谢
答
我知道可能会复活尸体。但尽管如此,这很容易:
线
modelClass model();
是错误的。您的编译器假定这是函数的前向声明()返回类型modelClass。因此,在调用QTreeView则错误::则setModel
行应该写成:
modelClass model;