不调用代理的模型函数

时间:2011-11-30 08:14:26

标签: c++ qt

我已将源模型连接到我的代理模型,并将我的代理模型作为视图的模型连接:

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),model_(new Model(this)),proxy_(new Proxy(this))
{
    setupUi(this);
    proxy_->setSourceModel(model_);

    listView->setModel(proxy_);

}

在Proxy类中我有一个fnc:

int Proxy::rowCount(const QModelIndex&) const
{
    static int a = 0;
    qDebug() << "Proxy::rowCount sourceModel()->rowCount() " << a++ << ": "<< sourceModel()->rowCount();
    return sourceModel()->rowCount();
}

但是当我通过模型的fnc添加要查看的内容时,不会调用它:

bool Model::set_data(int data)
{
    beginInsertRows(QModelIndex(),0,data_.size());
    data_.append(data);
    static int a = 0;
    qDebug() << "Model::set_data data_ " << a++ << ":" << data_;
    endInsertRows();
    emit dataChanged(createIndex(0,0),createIndex(data_.size(),0));
    return true;
}

上述功能通过SIGNAL SLOT连接对话框上的按钮连接:
 QObject :: connect(pushButton,SIGNAL(clicked()),Dialog,SLOT(insert()));对话框中的插入如下所示:

 bool Dialog::insert()
 {
     static int a = 0;
     return model_->set_data(a++);

 }

但尽管所有这些观点都没有表现出来。另一方面,如果我作为模型连接到视图我的Model类obj而不是Proxy一切正常 任何人都知道这里有什么问题吗? 编辑:: 测试模型后:

ASSERT failure in QList<T>::at: "index out of range", file c:\QtSDK\Desktop\Qt\4.7.4\mingw\include/QtCore/qlist.h, line 456

仅测试代理后:

D:\...\tst_mpv.exe exited with code -1073741819  

我的主要fnc看起来:

#include <QApplication>
#include "Dialog.h"
#include "Model.h"
#include "Proxy.h"
#include "modeltest.h"
int main(int c,char**v)
{
    QApplication app(c,v);
    /*Model* m = new Model;
    new ModelTest(m);*/
    Proxy* p = new Proxy;
    new ModelTest(p);
    /*Dialog d;
    d.show();*/
    return app.exec();
}

这是我的模型和代理类:http://pastebin.com/DiAAkiNY

0 个答案:

没有答案