Как средствами Qt отобразить дерево

Модератор: Модераторы разделов

oleg1956
Сообщения: 3
ОС: Mandriva Linux 2006.0

Как средствами Qt отобразить дерево

Сообщение oleg1956 »

Для прибора с embedded Linux требуется организовать иерархическое меню (два уровня вложенности). Структура меню описывается постоянно редактируемым текстовым файлом. Предположительно XML.

Впрочем, можно и покороче...
Как средствами Qt создать в приложении аналог системного меню.

Наилушие пожелания.
Спасибо сказали:
sdk
Бывший модератор
Сообщения: 210

Re: Как средствами Qt отобразить дерево

Сообщение sdk »

Мммм... Не очень понятно, что нужно отвечать :D.

"Аналог системного меню" - это конкретно что такое?
Если обычного popup-меню, то ответ: средствами для создания popup меню :).

Для этого в Qt есть классы QAction, QActionGroup.
Строите свое меню, используя их как кирпичики. Его иерархичность/неиерархичность определяется вами. Каким построите, таким и будет :).
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали:
oleg1956
Сообщения: 3
ОС: Mandriva Linux 2006.0

Re: Как средствами Qt отобразить дерево

Сообщение oleg1956 »

В очередной раз говорю себе - семь раз подумай, один раз пиши в форум.

Описывать собственно задачу сложно, хотя может быть и стоит.

Есть сделанный мозолистыми руками прибор на базе седьмого ARM + 16М ОЗУ. Он умеет измерять физические параметры медного кабеля, используемого в существующих телефонных кабельных сетях. Сами по себе параметры мало кого интересуют, чаще интересут другое - ГДЕ КОПАТЬ?! Комбинируя последовательность выполнения незначительного количества измерительных процедур, мы и пытаемся ответить на этот вопрос. А повреждения случаются разные и для каждой группы есть своя последовательность действий связки ПРИБОР-ЧЕЛОВЕК.

Возникла идея - действия описывать сценариями. И если бы не графическая среда, то я понаписал бы Shell-script-ов и наслаждался бы.
Из этой проблемы и родились вопросы:
- какими средствами описывать сценарии
- как пользователю показать все типы повреждений и все соответствующие каждому типу сценарии

Решили ничего не изобретать, взять XML, описать на нем иерархическую структуру системы сценариев, средствами Qt работать с XML, а средствами ??? показать эту структуру (дерево). Пользователь бродит по дереву и, нажимая на кнопочку, инициирует нужную последовательность действий.
Навигация по дереву осуществляется клавишами "вверх", "вниз", двухуровневое дерево раскрывается на экране, сам экран окаймляется 6-ю вертикальными и 6-ю горизонтальными функциональными клавишами.

В каждой группе повреждений не более 6 сценариев и каждый из них привязываем к одной из вертикальных функ.клавиш. Чел видит нужный сценарий, жмет кнопку и ... счастье!

Кто-нибудь дочитал до этого места? :rolleyes:
У меня есть сестра, но ее имя не Краткость, да и меня зовут, к сожалению, не Талант.

Для тех, кто дочитал, но не понял, попробую так...
Для опеределенности будем считать, что у меня есть небольшая электронная библиотека.
В ней три рубрики:
- Linux
- C++
- Достоевский
В каждой рубрике несколько книг. Используя "вверх" и "вниз" я хожу по списку рубрик, активная рубрика (под курсором) - раскрывается, около каждой книги - кнопочка, "прямым доступом" жмем нужную - стартует соответствующий книге просмотрщик - читаем книгу. Библиотека живая - все время появляются новые книги. Количество рубрик тоже может измениться.
Как сделать? :(
HTML+Browser? Готового Browser-а наша "платформа" не потянет, писать свой - уважаемые, я, грубо говоря, embedded-программист и мое любимое занятие дергать процессор за ноги - не лишайте меня этого удовольствия. По возможности.
Может у кого есть идеи? :unsure:

Наилучшие пожелания.
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: Как средствами Qt отобразить дерево

Сообщение v04bvs »

Честно говоря я прочитал всё, но не понял (или не понял, в чём проблема).
В Qt есть поддержка HTML-я без браузера (например класс QTextBrowser).

Есть классы QTreeView, QTreeWidget для показа иерархических данных.
Спасибо сказали:
oleg1956
Сообщения: 3
ОС: Mandriva Linux 2006.0

Re: Как средствами Qt отобразить дерево

Сообщение oleg1956 »

v04bvs писал(а):
16.07.2006 16:59
В Qt есть поддержка HTML-я без браузера (например класс QTextBrowser).

Ох, как не хочется идти этим путем...

v04bvs писал(а):
16.07.2006 16:59
Есть классы QTreeView, QTreeWidget для показа иерархических данных.

"Важно: указывайте пожалуйста свою версию QT" (с) http://prog.org.ru/forum/

Увы, забыл, я на 3.3.4. :blink: Дальше мне все понятно.
Спасибо всем потратившим на меня свое время.

Наилучшие пожелания.
Спасибо сказали:
sdk
Бывший модератор
Сообщения: 210

Re: Как средствами Qt отобразить дерево

Сообщение sdk »

В общем и целом, понятно.
Только зависит все от того, КАК вы хотите визуально представить свое дерево.
И, опять же, все зависит от вас. Когда вы решите КАК, мы поможем вам с КАКИМ-ОБРАЗОМ :).

Хотите в виде дерева-списка (такой, который с плюсиками, после нажатия на которые открываются дочерние элементы) - вам нужен QListView.
Хотите в виде кнопок с названиями верхнеуровневых категорий, по нажатию на которые открывается второй уровень (например клик по кнопке "Linux", "C++", "Достоевский" -> открывает список соответствующих книг). Тогда QPushButton.
Хотите в виде обычного меню - QPopupMenu.
Еще варианты? Спрашивайте ;).

Если вас интересует, есть ли в Qt конкретный класс типа "Этот класс создан специально для отображения двухуровневых деревьев" - ответ "нет". Такого класса нет - вам придется решить как вы хотите отобразить вашу структуру и действовать сообразно этому решению. Ручками :).
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали: