silvansky programming stuff

3Jun/100

как выдрать редактор QSS (Qt StyleSheets) из QtDesigner

в QtDesigner'е есть очень хорошая штука - редактор StyleSheet'ов. он соответственно имеет подсветку CSS. а значит, это может быть полезно.
в моём случае это не только полезно, но и нужно, так как избавляет от необходимости с нуля писать эту самую подсветку.
где взять?
качаем исходники Qt, заходим в tools/designer/src/lib/shared/ и находим там файлы stylesheeteditor.cpp и stylesheeteditor_p.h
после их изучения приходим к выводу, что нужны нам другие файлы: csshighlighter.cpp и csshighlighter_p.h
дальше что делать понятно.

с подсветкой синтаксиса всё понятно. но что же делать с валидацией? тут обратим внимание на отвергнутые в начале файлы и увидим там функцию StyleSheetEditorDialog::isStyleSheetValid, которая юзает namespace QCss, который опять таки не публичный и который надо копать...

копаем сюда: src/gui/text/ файлы qcssparser_p.h и qcssparser.cpp. это всё тянет за собой qcssscanner.cpp.

в общем, теперь можно приступать к сборке "с миру по нитке" своего редактора stylesheet'ов с валидацией и подсветкой.
а если хочется ещё и вставку и редактор градиентов........... то надо копать в сторону QtGradientViewDialog. ищите и обрящете! обращем же этот диалог в tools/shared/qtgradienteditor/
пока всё.

UPD: после детального изучения данного вопроса и долгого ковыряния в исходниках Qt, был написан тестовый проект, который включает в себя этот самый редактор QSS.
вот то, что реально вошло в проект и нужно для работы редактора без интеграции с дизайнером:

csshighlighter.*
qdesigner_utils.*
stylesheeteditor.*
[DIR] qtgradienteditor

разумеется, пришлось выбросить работу с ресурсами. кроме того, градиенты хранятся только для текущего запуска. можно сделать их сохранение, но пока не хочется...

Comments (0) Trackbacks (0)

No comments yet.


Leave a comment

(required)

No trackbacks yet.