Всем привет, делаю текстовый редактор xml на Qt с виджетами.
Появилась необходимость сделать механизм открытых документов как в QtCreator-е...
Т.е. открываешь какой-то файл проекта, его имя добавляется в виджет открытых документов, открывается в редакторе. После открытия следующего документа происходит тоже самое(добавляется новое имя файла в список виджетов). Если мы сделали изменения в открытом документе 1 и переключились в 2, все сделанные изменения остаются и при возврате к документу 1 всё остается на своих местах как это было до перехода(на 2).
Я сделал так:
-Унаследовал виджет от QListWidget.
-Добавил атрибут QMap
-При открытии файла посылается сигнал с его полным именем, в своем виджете я его обрабатываю слотом, в котором открываю файл, создаю новый QListWidgetItem(с именем открытого файла), выделяю память под весь считанный файл в *QTextDocument, сохраняю эту пару указателей в QMap.
Всё вроде бы работает... но возможно есть какой-то шаблон для такого решения более изящный?
Вам нужно разделить логику и представление. Смотрите в сторону MVC какого-нибудь. Причем я говорю не столько про Qt модели, сколько про концепцию в целом.