Что ж. Я работаю над IDE. Возможно, кто-то из вас видел пост об этом. Ну, я понятия не имею, как работают QTreeWidget и QtreeWidgetItem, так как не могу найти демо, а документация не помогает. Ну, то, что я пытаюсь сделать, это IDE, в которой вы открываете файл проекта, а затем включаете все файлы проекта в дерево. (Файлы в файле проекта включаются выполнением #include "имя файла"). Как мне это сделать? Затем вы щелкаете файл и открываете его на вкладке (это было по другому вопросу). Так что в этой части мне просто нужен пример того, как сделать щелчок по файлу. :)
QTreeWidget для проектов
Ответы (1)
Простым решением было бы прямое использование QTreeWidgetItem. Для каждого файла в вашем проекте создайте экземпляр QTreeWidgetItem:
QTreeWidgetItem *file = new QTreeWidgetItem(browserWidget);
file->setText(0, filename);
Где «имя файла» — это строка, содержащая имя вашего файла. Вы можете получить имя файла, проанализировав файл проекта в поисках строк, начинающихся с «#include».
Передавая другой QTreeWidgetItem в конструкторе нового элемента, вы делаете новый элемент дочерним по отношению к другому. Таким образом, вы можете создавать структуры каталогов.
Чтобы открыть файл, вы можете подключиться к сигналу "itemDoubleClicked" QTreeWidget. Вы получите указатель на выбранный элемент виджета. Вызов "text()" извлечет имя файла. Если у вас есть структура каталогов, вам нужно сделать это также для всех элементов родительского виджета. Объединив строки, вы получите путь к вашему файлу.
Вы можете найти пример для этого в Qt Docs (см. .cpp)
Пока ваша IDE остается простой, этого будет достаточно. Более гибким и "объектно-ориентированным" решением было бы создание подкласса QTreeWidgetItem. Вам нужно будет перезаписать некоторые методы. Поскольку вам, вероятно, нужен только доступ только для чтения, четыре метода, описанные в Qt Docs будет достаточно.