![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
frg10 |
![]()
Сообщение
#11
|
Студент ![]() Группа: Участник Сообщений: 47 Регистрация: 8.11.2009 Из: Ростов-на-Дону Пользователь №: 1213 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
Disclaimer: пишу все чисто теоретически - на практике ничего из нижеперечисленного не делал.
Если вы действительно хотите взяться за это, то приготовьтесь потянуть себе много всего из QtCreator. Вот мне кажется минимум: 1) ExtensionSystem - загрузка и управление плагинами 2) Aggregation - аггрегация объектов 3) CorePlugin - собственно ядро QtCreator. Требуется для работы любого плагина. 4) TextEditor - требуется для DuiEditor 5) Find, QuickOpen - требуются для TextEditor 6) Сам DuiEditor Далее приготовьтесь: 1) Необходимо загрузить и инициализировать все плагины. Этим занимается PluginManager из ExtensionSystem. Как это делается можно посмотреть в qtcreator/app/main.cpp. 2) Core при загрузке создает главное окно приложения. Т.е. создастся окно QtCreator с меню и панельками. 3) Когда плагин инициализируется, он регистрирует все объекты, которые предоставляет, в PluginManager. Соответственно, если вы хотите использовать этот функционал, то вам нужно получать эти объекты из PluginManager-а или можно воспользоваться интерфейсом ICore. Второй вариант гораздо проще. Конкретно DuiEditor экспортирует: - фабрику классов для создания редакторов. - визард для создания QML файлов - объект Code Completion - подсветку редактора Для примера, допустим что вам нужно открыть редактор QML. Класс ICore предоставляет доступ к различным менеджерам. В том числе, там есть EditorManager. Этот менеджер управляет редакторами и может их создавать (внутри у него есть список всех зарегистрированных фабрик). Создать редактор можно так:
mimetype передавать не обязательно, если файл имеет расширение qml. Получаем указатель на интерфейс IEditor - это и есть редактор. Через функцию IEditor::widget() получаем окно и делаем с ним все что угодно. Надеюсь помог. ![]() Если хотите дальше разрабатывать эту тему, то без ковыряния исходников никак не обойтись. |
|
|
Гость_Гость_heiheshang_*_* |
![]()
Сообщение
#12
|
Гости ![]() |
frg10
Копание в коде привело меня к такому результату
но такой код генерит исключение. Может подскажете где копать , загрузить библиотеки или еще чего установить для приложения?
Причина редактирования: не цитируй целыми сообщениями
|
|
|
frg10 |
![]()
Сообщение
#13
|
Студент ![]() Группа: Участник Сообщений: 47 Регистрация: 8.11.2009 Из: Ростов-на-Дону Пользователь №: 1213 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
А что, то что я написал не работает? Вы все плагины загрузили?
|
|
|
Гость_Гость_heiheshang_*_* |
![]()
Сообщение
#14
|
Гости ![]() |
А что, то что я написал не работает? Вы все плагины загрузили? Не работает
Делал так , скопировал из main.cpp
|
|
|
frg10 |
![]()
Сообщение
#15
|
Студент ![]() Группа: Участник Сообщений: 47 Регистрация: 8.11.2009 Из: Ростов-на-Дону Пользователь №: 1213 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
Гм... У меня ваш код без последних четрех строк отлично работает с QtCreator 1.2.1. На какой строчке у вас падает?
|
|
|
Гость_Гость_heiheshang_*_* |
![]()
Сообщение
#16
|
Гости ![]() |
|
|
|
frg10 |
![]()
Сообщение
#17
|
Студент ![]() Группа: Участник Сообщений: 47 Регистрация: 8.11.2009 Из: Ростов-на-Дону Пользователь №: 1213 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
Да, не получается у него стиль загрузить. Просто QtCreator запускается? Под какой системой сидите?
Попробуйте вставит вначале программы, после создания QApplication строчку:
Что выдаст? |
|
|
Гость_Гость_heiheshang_*_* |
![]()
Сообщение
#18
|
Гости ![]() |
Да, не получается у него стиль загрузить. Просто QtCreator запускается? Под какой системой сидите? Попробуйте вставит вначале программы, после создания QApplication строчку:
Что выдаст? Ни че не выдает хотя стоит QApplication::setStyle(new QWindowsStyle); |
|
|
frg10 |
![]()
Сообщение
#19
|
Студент ![]() Группа: Участник Сообщений: 47 Регистрация: 8.11.2009 Из: Ростов-на-Дону Пользователь №: 1213 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
Ни че не выдает хотя стоит QApplication::setStyle(new QWindowsStyle); Тогда нужно или вообще убрать принудительную установку стиля, или сделать вот так:
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#20
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Стиль лучше устанавливать через фабрику:
и проверять указатель, т.к. стиля может не существовать на данной конкретной машине
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 7.7.2025, 22:52 |