5777
|
Qt / Model-View (MV) / Re: Сортировка в модели
|
: Август 29, 2007, 11:34
|
А ты пробовал этот код? Просто у меня он не заработал. Из sort ты вызываешь QSortFilterProxyModel::sort( column, order ); но QSortFilterProxyModel - это не твоя модель, и lessThan у нее соответсвенно не твой.
|
|
|
5778
|
Qt / Model-View (MV) / Re: Сортировка в модели
|
: Август 28, 2007, 11:26
|
Облом. Все не то. Вот мой код: QVariant UpData = sourceModel()->data(sourceModel()->index(qmiUp.row(),2)); QVariant DownData = sourceModel()->data(sourceModel()->index(qmiDown.row(),2));
if ((UpData.toString()=="-=DIR=-") && (DownData.toString()!="-=DIR=-")) { return true; } else if ((UpData.toString()!="-=DIR=-") && (DownData.toString()=="-=DIR=-")) { return false; }
В итоге папки отдельно от файлов, но то вверху, то внизу. Решением послужило бы QVariant UpData = sourceModel()->data(sourceModel()->index(qmiUp.row(),2)); QVariant DownData = sourceModel()->data(sourceModel()->index(qmiDown.row(),2));
if ((UpData.toString()=="-=DIR=-") && (DownData.toString()!="-=DIR=-")) { return true && order; } else if ((UpData.toString()!="-=DIR=-") && (DownData.toString()=="-=DIR=-")) { return false && order; }
Где order есть Qt::SortOrder (AscendingOrder или DescendingOrder). Но как этот order достать? ?
|
|
|
5780
|
Qt / Model-View (MV) / Re: Сортировка в модели
|
: Август 27, 2007, 16:52
|
Да я не об этом. Есть колонка имен с номером 0. Щелкаем по ней один раз и сортировка происходит по возрастанию, щелкаем второй - по убыванию. Мне нужно знать, по возрастанию или убыванию сортировка, потому что lessThan в разных случаях интерпретируется по разному, т.е. логически умножается на порядок сортировки.
|
|
|
5781
|
Qt / Model-View (MV) / Re: Сортировка в модели
|
: Август 27, 2007, 12:11
|
собственная сортировка устанавливается через setSortRole()
На сколько я понял из ассистента, setSortRole() к этому никаким боком не относится. Посмотри значения enum Qt::ItemDataRole там ничего о порядке сортировки.
|
|
|
5782
|
Qt / Model-View (MV) / Re: Сортировка в модели
|
: Август 27, 2007, 11:38
|
bool QSortFilterProxyModel::lessThan ( const QModelIndex & left, const QModelIndex & right ) const { ... if (leftType != rightType) return (leftType == dir); // или return (leftType == file); вверх-вниз else return QString::localeAwareCompare(leftString, rightString) < 0; } Забыл: насчёт первого да правильно QStandardItemMode это как БД, а QSortFilterProxyModel как SQL запрос Этот код есть в ассисетнте. Вопрос был в другом: как узнать ТЕКУЩИЙ тип сортировки (вверх-вниз)? Ваш код работать не будет, так как дирректории будут или все вверху, или все внизу. А почему не воспользовался QDirModel там и сортировка вроде как есть и филтры?
Во-первых недавно я поднимал вопрос о баге с pagefile.sys, а во-вторых скорость загрузки не устраивает и еще кое какие мелочи.
|
|
|
5783
|
Qt / Model-View (MV) / Сортировка в модели
|
: Август 26, 2007, 18:07
|
В общем все началось давным давно.... Использую QStandardItemModel и QTreeView, загоняю в модель имена файлов, расширения, даты, в общем самодельный файловый менеджер. Понадобилась сортировка, после прочтения форума понял, что нужно действовать через QSortFilterProxyModel. После прочтения ассистента пришел к такой связке: 1. Наследую класс QSortFilterProxyModel. 2. Переписываю lessThan. 3. Подключаю QStandardItemModel к QSortFilterProxyModel. 4. Подключаю QSortFilterProxyModel к QTreeView. Собственно несколько вопросов: 1. Праильно ли сделано, просто какое-то очень неудобное подключение модели через модель. 2. Как сделать дирректории всегда вверху? Т.е. тут вопрос в том, где достать тип сортировки(сверху вниз или наоборот). Искал в модели, но там это встречается только в sort, но переопределяя эту функцию я гроблю всю сортировку.
|
|
|
5789
|
Qt / Печать / Re: Печать отчета
|
: Август 20, 2007, 16:56
|
Вот такой шаблон: <FONT style="font-size: 12pt;"> <p align="center">Справка $NUMBER_REFERENCE</p> <p align="center">к делу № $NUMBER_DELO</p> <p>$FIO снят(а) с учета с $DATE_OUT</p> <p>Основание: $OSNOVANIE</p> <br> <p>$PODPIS</p> <p>$CURRENT_DATE</p> </FONT>
Вот так заполняю: QStringList qslGetPrintText(const QStringList qslStructText) { QStringList qslPrintText=qslStructText; qslPrintText.replaceInStrings("$NUMBER_REFERENCE", qsNumberReference); qslPrintText.replaceInStrings("$DATE_OUT", qsDateOut); qslPrintText.replaceInStrings("$DATE_SNJAT", qsDateOut1); qslPrintText.replaceInStrings("$OSNOVANIE", qsOsnOut); return qslPrintText; }
Печатаю так: QTextDocument* document=new QTextDocument(); document->setHtml( qslGetPrintText(qslStructList)); QDialog* dlgPreview=new QDialog(this,Qt::WindowMaximizeButtonHint); dlgPreview->resize(640,480); QTextEdit* tePreview=new QTextEdit(dlgPreview); tePreview->setDocument(document); QVBoxLayout* layout=new QVBoxLayout(); layout->addWidget(tePreview); dlgPreview->setLayout(layout); dlgPreview->exec(); delete document; delete tePreview; delete dlgPreview;
|
|
|
5790
|
Qt / Базы данных / Re: Qt и dbf-файлы
|
: Август 20, 2007, 11:47
|
Можно надыбать в нете(а это очень легко) формат этого файла и сделать свой класс для работы с ним. А можно пройтись поиском по этому форуму и найти готовый примет. Поиск рулит.
|
|
|
|
|