Название: GUI для поиска по документу Отправлено: moskk от Октябрь 10, 2012, 16:12 приветствую.
задача: написать гуйку для отображения результатов поиска по тектстовому документу. выглядеть должно примерно так, как поиск по форуму, только попроще: несколько клеток, в каждую клетку пишется кусок предложения, в котором встретилась фраза. в центре куска искомая фраза, подсвеченая цветом. по щелчку на тексте документ должен прокручиваться до нужного места. есть несколько идей: 1. заюзать QTextBrowser или QTextEdit. текст для отображения передавать в виде хтмл, куски, где встречается искомое слово, отделять горизонтальной чертой <hr>. ВОПРОС: как понять, в какой кусок текста (из нескольких найденных) я ткнул мышью? или в какой символ документа по счёту? или ещё как? 2. заюзать QListWidget, в его клетки впихнуть при помощи setItemWidget опять же QTextBrowser или QTextEdit. но: кол-во текста в каждом куске разное, а размер клеток в листе одинаковый - будет некрасиво. опять ВОПРОС: как ячейку листа растянуть/сжать под размер виджета в ней? и как виджет приаджастить к тексту в нём? 3. может, есть какие-то более стандартные и внятные варианты? буду рад ответу на любой из вопросов :) плиз-плиз! Название: Re: GUI для поиска по документу Отправлено: cya-st от Октябрь 10, 2012, 19:17 http://qt-project.org/doc/qt-4.8/model-view-programming.html - тут все доступно описано
Название: Re: GUI для поиска по документу Отправлено: moskk от Октябрь 11, 2012, 19:28 http://qt-project.org/doc/qt-4.8/model-view-programming.html - тут все доступно описано бесспорно, но вопрос был не по архитектуре, а по конкреным приёмам работы с виджетами.в идеале должно получиться, как на картинке в аттаче. какие бы виджеты лучше использовать? Название: Re: GUI для поиска по документу Отправлено: kambala от Октябрь 11, 2012, 20:23 qtreeview/qtreewidget
Название: Re: GUI для поиска по документу Отправлено: cya-st от Октябрь 11, 2012, 21:26 http://qt-project.org/doc/qt-4.8/model-view-programming.html - тут все доступно описано бесспорно, но вопрос был не по архитектуре, а по конкреным приёмам работы с виджетами.в идеале должно получиться, как на картинке в аттаче. какие бы виджеты лучше использовать? Название: Re: GUI для поиска по документу Отправлено: panAlexey от Октябрь 11, 2012, 23:55 qtreeview/qtreewidget не. нафиг.довольно часто приходится искать потом в результатах поиска. по этому уж лучше использовать нечто из чего можно тупо скопировать текст. это я ка программист говорю. Название: Re: GUI для поиска по документу Отправлено: Bepec от Октябрь 12, 2012, 12:05 Насколько я помню, скопировать из treeWidget не составляет проблемс :)
Название: Re: GUI для поиска по документу Отправлено: moskk от Октябрь 12, 2012, 12:58 там рассматриваются конкретные примеры, реализация MVC. Что вы имеете под понятием архитектура? Архитектура приложения? я имею, что я имею общее представление, что такое MVC, и что для решения моей задачи нужно некий внутренний источник данных и некий гуй для их отображения. причём гуй должен состоять из некой иерархии встроенных друг в друга виджетов.подозреваю, что не очень чётко изложил задачу (сам еёё только недавно понял). попробую ещё раз: есть плавающее окно, в котором нужно отобразить результат поиска. поиском оно не занимается, а только отображает результат, получаемый извне. его задачи: - попарсить результаты поиска - передать их окну просмотрщика документов - получить о него html-код с кусками документов, в которых искомые фрагменты подсвечены - отобразить их в списке (с подсветкой кусков, что важно) - а потом ещё при кликах на разных строках списка сгенерить команду просмотрщику промотать документ до нужного места. дерево файлов в самом списке не нужно, поиск всегда по одному документу, и поиск в найденном не нужен.ъ в итоге получилось так (аттач). для списка использован QTableWidget (QListWidget отказался отображать в себе виджеты почему-то), для айтемов - QTextBrowser (необходимо, чтобы айтем понимал html). оставшиеся вопросы: 1. как запретить выделение текста в QTextBrowser? искал - не понял. выключать его не катаит, так как он тогда становится чёрно-белым. 2. как пробросить клики на браузерах таблице? это нужно, чтобы понять, на каком айтеме мы ткнули мышью. 3. почему может не отображаться горизонтальный скролл в таблице? с вертикальным всё нормально, появляется, когда нужен, а горизонтальный не появляется никогда. в настройках у обоих стоит ScrollBarAsNeeded. upd: почитал доки и понял, что первые два вопроса по идее побеждаются, если отнаследоваться от QTextBrowser и сделать promote. я просто раньше в билдере писал в основном, там наследование от VCL-ного класса - целая история. но третий вопрос остаётся. Название: Re: GUI для поиска по документу Отправлено: panAlexey от Октябрь 12, 2012, 16:08 Насколько я помню, скопировать из treeWidget не составляет проблемс :) Только из текущей ячейки.А если надо получить весь результат и пройтись по нему еще раз - у вас проблемы. поверьте, намучался. Задача возникает не часто, на если возникает - это ЖПО. Мне в нотепаде++ нравится как реализовано. Название: Re: GUI для поиска по документу Отправлено: Bepec от Октябрь 12, 2012, 17:35 treeWidget -> treeView со своей моделью -> слот у модели, отдающий список содержимого -> профит.
Название: Re: GUI для поиска по документу Отправлено: moskk от Октябрь 17, 2012, 14:28 по третьему вопросу нашлось решение: http://www.qtcentre.org/threads/51584-no-horizontal-scroll-bar-in-QTableWidget?p=231298#post231298
проблема исчезает, если в таблице более одной колонки, либо если сделать для таблицы: Код
|