QTreeWidget для проектов

Что ж. Я работаю над IDE. Возможно, кто-то из вас видел пост об этом. Ну, я понятия не имею, как работают QTreeWidget и QtreeWidgetItem, так как не могу найти демо, а документация не помогает. Ну, то, что я пытаюсь сделать, это IDE, в которой вы открываете файл проекта, а затем включаете все файлы проекта в дерево. (Файлы в файле проекта включаются выполнением #include "имя файла"). Как мне это сделать? Затем вы щелкаете файл и открываете его на вкладке (это было по другому вопросу). Так что в этой части мне просто нужен пример того, как сделать щелчок по файлу. :)


person Kazuma    schedule 20.02.2011    source источник
comment
Поскольку вам нужны учебники, несколько ссылок для вас: Kde techbase -techbase.kde.org/Development /Tutorials/, простой sector.ynet.sk/qt4-tutorial/ dnd.html   -  person vettipayyan    schedule 20.02.2011


Ответы (1)


Простым решением было бы прямое использование QTreeWidgetItem. Для каждого файла в вашем проекте создайте экземпляр QTreeWidgetItem:

QTreeWidgetItem *file = new QTreeWidgetItem(browserWidget);
 file->setText(0, filename);

Где «имя файла» — это строка, содержащая имя вашего файла. Вы можете получить имя файла, проанализировав файл проекта в поисках строк, начинающихся с «#include».

Передавая другой QTreeWidgetItem в конструкторе нового элемента, вы делаете новый элемент дочерним по отношению к другому. Таким образом, вы можете создавать структуры каталогов.

Чтобы открыть файл, вы можете подключиться к сигналу "itemDoubleClicked" QTreeWidget. Вы получите указатель на выбранный элемент виджета. Вызов "text()" извлечет имя файла. Если у вас есть структура каталогов, вам нужно сделать это также для всех элементов родительского виджета. Объединив строки, вы получите путь к вашему файлу.

Вы можете найти пример для этого в Qt Docs (см. .cpp)

Пока ваша IDE остается простой, этого будет достаточно. Более гибким и "объектно-ориентированным" решением было бы создание подкласса QTreeWidgetItem. Вам нужно будет перезаписать некоторые методы. Поскольку вам, вероятно, нужен только доступ только для чтения, четыре метода, описанные в Qt Docs будет достаточно.

person McNumber    schedule 03.03.2011