Я подключил исходную модель к своей прокси-модели и мою прокси-модель как модель к представлению:
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(нажал ()), диалоговое окно, слот (вставить ()));и вставка из диалога выглядит следующим образом:
bool Dialog::insert()
{
static int a = 0;
return model_->set_data(a++);
}
Но, несмотря на все это, ничего не показывает.С другой стороны, если я подключаю в качестве модели к представлению мой класс Model obj вместо Proxy, то все работает.
Кто-нибудь знает, что здесь не так?
EDIT :: После тестирования модели:
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();
}
вот мои классы Model и Proxy: http://pastebin.com/DiAAkiNY