0

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*)*

誰でもこのエラーで私を助けてもらえますか? 私が見逃しているのは単純なものだと確信しています。ありがとうございました

4

1 に答える 1

1

死体を蘇らせる可能性もありますね。それでも、これは簡単です。

この線

modelClass model();

間違っている。コンパイラは、これが型modelClassを返す関数model()の前方宣言であると想定します。したがって、QTreeView::setModelへの呼び出しのエラー

行は次のように記述します。

modelClass model;

参照: http://en.wikipedia.org/wiki/Most_vexing_parse

于 2013-03-17T13:55:32.993 に答える