Название: SqlTableModel + SortFilterProxyModel Отправлено: LEO от Февраль 12, 2013, 13:43 Добрый день, пытаюсь сделать фильтр, так чтобы он работал сразу на две колонки при вводе в одно поле эдита. Использую QSqlTablemodel + QSortFilterModel + tableview, для данной цели создал класс (отнаследовался от QSortFilterProxyModel), следующим образом:
.h Код: class MyFilterProxyModel : public QSortFilterProxyModel Код: #include <QtGui> вот кусок кода из конструктора Код: \\\\\\\\\\\\\\\\\\\\\ при этом возникает ошибка: "ошибка: undefined reference to `vtable for MyFilterProxyModel'" при этом если использовать QSortFilterProxyModel напрямую, то фильтрация работает по одной колонке... в чем может быть, проблема, с QSortFilterProxyModel не работал прежде , не судите строго... ??? Название: Re: SqlTableModel + SortFilterProxyModel Отправлено: kambala от Февраль 12, 2013, 23:39 может забыл #include "mysortfilterproxymodel.h" в том файле где твой конструктор?
и твой код будет фильтровать лишь по второй колонке, а не по первым двум. для первой надо аналогичное условие через || дописать. Название: Re: SqlTableModel + SortFilterProxyModel Отправлено: LEO от Февраль 13, 2013, 11:28 Цитировать #include "mysortfilterproxymodel.h" на месте... всеравно пишет ту же муйню ???дабы не проявлять телепатические способности выкидываю то что получилось Название: Re: SqlTableModel + SortFilterProxyModel Отправлено: kambala от Февраль 13, 2013, 12:22 перезалей на файлообменник — отсюда не качается
Название: Re: SqlTableModel + SortFilterProxyModel Отправлено: LEO от Февраль 13, 2013, 12:35 http://rghost.ru/43762917
Название: Re: SqlTableModel + SortFilterProxyModel Отправлено: kambala от Февраль 13, 2013, 14:20 всё работает. полностью очисти проект и пересобери.
Название: Re: SqlTableModel + SortFilterProxyModel Отправлено: LEO от Февраль 13, 2013, 15:21 действительно поудалял генерируемые файлы и собралось все без ошибок, однако фильтрует исключительно по одному столбцу... :(
фильтруется только одна колонка где фио так как прописано proxy->setFilterKeyColumn(1); если это убрать то фильтруется только по колонке Id она нулевая, хотя условие подправил чтоб 2 фильтровал как вы и говорили ранее Код:
Название: Re: SqlTableModel + SortFilterProxyModel Отправлено: kambala от Февраль 13, 2013, 18:36 думаю индексы должны быть 0 и 1 а не 1 и 2
Название: Re: SqlTableModel + SortFilterProxyModel Отправлено: LEO от Февраль 13, 2013, 22:18 пробовал менять, 0 реакции
Название: Re: SqlTableModel + SortFilterProxyModel Отправлено: schmidt от Февраль 14, 2013, 06:37 А вы вообще пробовали для верности написать
Код: bool MyFilterProxyModel::filterAcceptsRow(int sourceRow, Ибо в вашей модели просто не загружено никаких данных. Код:
Пишет Код: 0 rows loaded in model Ищите ошибку в другом месте :) Название: Re: SqlTableModel + SortFilterProxyModel Отправлено: LEO от Февраль 14, 2013, 07:53 qDebug() << model->rowCount() << " rows loaded in model";
сделал как вы говорили, пишет что 4 строки загружено, т.к. в модели и есть 4, видимо у вас 0 писало так как база которая там залита пустая,и вы не добавляли строк... Название: Re: SqlTableModel + SortFilterProxyModel Отправлено: kambala от Февраль 14, 2013, 12:28 код фильтрации 100% правильный. поставь в том методе брейкпоинт и посмотри попадает ли вообще.
Название: Re: SqlTableModel + SortFilterProxyModel Отправлено: LEO от Февраль 14, 2013, 15:15 в режиме отладки вообще не собирается, выдает ошибку,
ASSERT failure in QVector<T>::at: "index out of range", file ..\..\include/QtCore/../../src/corelib/tools/qvector.h, line 351 :o Название: Re: SqlTableModel + SortFilterProxyModel Отправлено: ViTech от Февраль 14, 2013, 17:20 Может сначала надо model->select() вызвать, а потом model->setHeaderData? Так и в справке написано.
Код
И строки надо всегда писать латинскими буквами. Не надо туда пихать русские, тем более не в кодировке UTF-8. tr("......") предназначено для перевода с английского на другие языки, а не наоборот. Название: Re: SqlTableModel + SortFilterProxyModel Отправлено: LEO от Февраль 15, 2013, 00:01 возможно неправ с этими переводами, но на английском оставить, не так меня поймут), так вроде отображает как надо, на фильтрацию это врядли влияет, а так спасибо за замечание, как говорится на ошибках учатся, к сожалению в основном приходится учится исключительно на своих... :(
в общем сделал так: proxy->setFilterKeyColumn(-1);\\ начало искать по всем колонкам, в принципе терпимо вроде как начало работать, всем спасибо Название: Re: SqlTableModel + SortFilterProxyModel Отправлено: ViTech от Февраль 15, 2013, 11:47 возможно неправ с этими переводами, но на английском оставить, не так меня поймут), так вроде отображает как надо, на фильтрацию это врядли влияет, а так спасибо за замечание, как говорится на ошибках учатся, к сожалению в основном приходится учится исключительно на своих... :( С переводом лучше пораньше разобраться, тем более, что там все довольно просто. А так, чем дальше - тем больше потом переделывать придется :).Название: Re: SqlTableModel + SortFilterProxyModel Отправлено: LEO от Февраль 15, 2013, 14:23 я на самом деле не вижу там глобальной проблемы все отображается как надо, на что это влияет?!
Название: Re: SqlTableModel + SortFilterProxyModel Отправлено: ViTech от Февраль 15, 2013, 14:58 Когда не видят глобальных проблем, то получают много локальных :). На что это повлияет узнаете, когда встретятся два файла в кодировке UTF-8 и CP-1251. Или когда у человека редактор будет настроен на UTF-8 и он откроет ваши исходники. И наоборот. Не говоря уже о том, все ли компиляторы захотят такое кушать.
|