Название: Фильтры Отправлено: Astrologer от Сентябрь 15, 2010, 11:18 Всем привет.Мне нужно сделать фильтрацию по базе данных. Хочу над каждым столбцом сделать текстовое поле при вводе в которое будет осуществляться фильтрация. Как добавить над каждым столбцом QTableView QLineEdit чтобы по ширине он совпадал с ним?
Как добавить в QtreeWidget элемент, представляющий собой QLineEdit, чекбокс, .... ? Название: Re: Фильтры Отправлено: Пантер от Сентябрь 15, 2010, 11:29 Тут была тема про то, как встроить текстовые поля в заголовок. Подойдет? Если да, то пробежись по поиску.
Название: Re: Фильтры Отправлено: Astrologer от Сентябрь 15, 2010, 11:34 Спасибо, думаю подойдет. Только поиск не очень помогает(( киньте ссылку если под рукой есть. И еще вопрос. Например послы выборки мне необходимо сформировать отчет, однако нужно выбрать некоторое количество полей из таблицы. Как это сделать не обращаясь к базе? Насчет выбора полей - можно создать QTreeView и добавить чекбоксы на каждое поле текущей таблицы и по клику их прятать.
Название: Re: Фильтры Отправлено: Пантер от Сентябрь 15, 2010, 11:49 Сам что-то найти не могу. Может кто еще подскажет.
По отчету подробнее опиши. Посмотри вот эту ветку http://www.prog.org.ru/topic_12314_0.html Название: Re: Фильтры Отправлено: Astrologer от Сентябрь 15, 2010, 11:55 Как определить щелчок по заголовку столбца?
Название: Re: Фильтры Отправлено: crossly от Сентябрь 15, 2010, 12:16 Код: void QHeaderView::sectionClicked ( int logicalIndex ) [signal] Название: Re: Фильтры Отправлено: Astrologer от Сентябрь 15, 2010, 12:33 Спасибо. Мне кажется я неправильно соединяю, ибо не работает))
Код: connect(view->verticalHeader(), SIGNAL(sectionClicked(int)), this, SLOT(sort(int))); Название: Re: Фильтры Отправлено: BRE от Сентябрь 15, 2010, 12:35 Спасибо. Мне кажется я неправильно соединяю, ибо не работает)) А точно нужен щелчек по verticalHeader, может все таки horizontalHeader?Код: connect(view->verticalHeader(), SIGNAL(sectionClicked(int)), this, SLOT(sort(int))); Название: Re: Фильтры Отправлено: Astrologer от Сентябрь 15, 2010, 12:38 :) Тысяча чертей, вы правы!!
Название: Re: Фильтры Отправлено: Astrologer от Сентябрь 15, 2010, 12:59 Насчет выбора полей - можно создать QTreeView и добавить чекбоксы на каждое поле текущей таблицы и по клику их прятать. Кто нибудь сталкивался? Название: Re: Фильтры Отправлено: Astrologer от Сентябрь 15, 2010, 14:17 Как проверить что QTreeWidgetItem не имеет parent или сделать так, чтобы оно было некликабельным? Ибо если по сигналу itemClicked(QWidgetItem* item, int column) попробовать вызвать item->parent()->text(0) то вылетает.
Название: Re: Фильтры Отправлено: Astrologer от Сентябрь 15, 2010, 14:28 Как то так.
Код: void QDbfReader::item_selected(QTreeWidgetItem* item, int column) Название: Re: Фильтры Отправлено: BRE от Сентябрь 15, 2010, 14:32 Как проверить что QTreeWidgetItem не имеет parent или сделать так, чтобы оно было некликабельным? Ибо если по сигналу itemClicked(QWidgetItem* item, int column) попробовать вызвать item->parent()->text(0) то вылетает. :)Код
Название: Re: Фильтры Отправлено: Astrologer от Сентябрь 15, 2010, 15:30 Ребят, есть какая нибудь идея как реализовывать фильтры по каждому столбцу?
Название: Re: Фильтры Отправлено: crossly от Сентябрь 15, 2010, 16:08 сунуть комбо бокс в хидер и все...
Название: Re: Фильтры Отправлено: Astrologer от Сентябрь 15, 2010, 16:36 Название: Re: Фильтры Отправлено: crossly от Сентябрь 15, 2010, 18:26 http://www.prog.org.ru/topic_6921_0.html (http://www.prog.org.ru/topic_6921_0.html)
Название: Re: Фильтры Отправлено: Astrologer от Сентябрь 16, 2010, 09:24 Пытаюсь отсортировать QSqlQuery
Код:
Не работает(( Название: Re: Фильтры Отправлено: Kolobok от Сентябрь 16, 2010, 11:03 Читай документацию внимательнее.
Код: void QSortFilterProxyModel::sort ( int column, Qt::SortOrder order = Qt::AscendingOrder ) Название: Re: Фильтры Отправлено: Astrologer от Сентябрь 16, 2010, 11:08 Спасибо, не усмотрел сразу.
У меня поля все текстовые, в которых может быть числа и при сортировке получается что то вроде "1541.6", "232", "310", "810", .... Название: Re: Фильтры Отправлено: Kolobok от Сентябрь 16, 2010, 11:23 Переопредели
Код: bool QSortFilterProxyModel::lessThan ( const QModelIndex & left, const QModelIndex & right ) const или Код: QVariant QAbstractItemModel::data ( const QModelIndex & index, int role = Qt::DisplayRole ) const в основной модели. Название: Re: Фильтры Отправлено: Astrologer от Сентябрь 17, 2010, 09:29 А если пойти другим путем, по этому мне не все понятно, как переопределять чтобы конвертило поле во float или int. Можно ли с помощью SQL команды изменить тип поля скажем с text на real?
Название: Re: Фильтры Отправлено: Astrologer от Сентябрь 17, 2010, 10:08 Переопредели Код: bool QSortFilterProxyModel::lessThan ( const QModelIndex & left, const QModelIndex & right ) const или Код: QVariant QAbstractItemModel::data ( const QModelIndex & index, int role = Qt::DisplayRole ) const в основной модели. А можно капельку поподробнее? Я еще новичок в этом деле! Название: Re: Фильтры Отправлено: Kolobok от Сентябрь 17, 2010, 10:12 А если пойти другим путем, по этому мне не все понятно, как переопределять чтобы конвертило поле во float или int. Код: QVariant SqlQueryModel::data ( const QModelIndex & index, int role = Qt::DisplayRole ) const Можно ли с помощью SQL команды изменить тип поля скажем с text на real? Читай про alter table. Название: Re: Фильтры Отправлено: Astrologer от Сентябрь 17, 2010, 12:48 QSqlQuery data уже перегружен. Сделал через проксифильтр.
Код: bool MySortModel::lessThan(const QModelIndex &left, const QModelIndex &right) const Проблема в том, что Код: canConvert(QVariant::Double) Название: Re: Фильтры Отправлено: Kolobok от Сентябрь 17, 2010, 13:44 Если есть возможность, лучше решить на уровне БД.
Название: Re: Фильтры Отправлено: MoPDoBoPoT от Сентябрь 17, 2010, 13:50 Проблема в том, что canConvert(QVariant::Int) туда же... Тоже приходилось извращаться через toDouble(&ok).Код: canConvert(QVariant::Double) Windows XP, Qt 4.5.2 Название: Re: Фильтры Отправлено: Kolobok от Сентябрь 17, 2010, 14:39 Да, судя по коду canConvert() сравнивает типы данных, а не значения. В этом случае остается только toDouble(&ok).
Название: Re: Фильтры Отправлено: Astrologer от Сентябрь 23, 2010, 12:11 Кстати Sqlite не поддерживает ALTER TABLE.
http://www.sqlite.org/lang_altertable.html SQLite supports a limited subset of ALTER TABLE. The ALTER TABLE command in SQLite allows the user to rename a table or to add a new column to an existing table. It is not possible to rename a column, remove a column, or add or remove constraints from a table. Название: Re: Фильтры Отправлено: crossly от Сентябрь 23, 2010, 12:21 точнее поддерживает но не полностью...
|